有没有一种方法来检索类型T从IEnumerable<T>通过反射?
T
IEnumerable<T>
例如
我有一个可变的IEnumerable<Child>信息;我想通过反射来检索孩子的类型
IEnumerable<Child>
IEnumerable<T> myEnumerable; Type type = myEnumerable.GetType().GetGenericArguments()[0];
因此,
IEnumerable<string> strings = new List<string>(); Console.WriteLine(strings.GetType().GetGenericArguments()[0]);
版画System.String。
System.String
请参阅MSDN的Type.GetGenericArguments。
Type.GetGenericArguments
编辑: 我相信这将解决评论中的关注点:
// returns an enumeration of T where o : IEnumerable<T> public IEnumerable<Type> GetGenericIEnumerables(object o) { return o.GetType() .GetInterfaces() .Where(t => t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IEnumerable<>)) .Select(t => t.GetGenericArguments()[0]); }
一些对象实现了多个泛型,IEnumerable因此有必要返回它们的枚举。
IEnumerable
编辑: 虽然,我不得不说,对于一个类实现IEnumerable<T>多个对象是一个糟糕的主意T。