Есть ли способ получить тип T из IEnumerable<T> через отражение?
T
IEnumerable<T>
, например
у меня есть переменная IEnumerable<Child> info; я хочу получить тип ребенка через отражение
IEnumerable<Child>
Вот как я обычно это делаю (с помощью метода расширения):
public static Type GetIEnumerableUnderlyingType<T>(this T iEnumerable) { return typeof(T).GetTypeInfo().GetGenericArguments()[(typeof(T)).GetTypeInfo().GetGenericArguments().Length - 1]; }
typeof(IEnumerable<Foo>). GetGenericArguments()[0] вернет первый общий аргумент - в данном случае typeof(Foo).
typeof(IEnumerable<Foo>)
GetGenericArguments()
[0]
typeof(Foo)