IEnumerable<T> myEnumerable;
Type type = myEnumerable.GetType().GetGenericArguments()[0];
因此,
IEnumerable<string> strings = new List<string>();
Console.WriteLine(strings.GetType().GetGenericArguments()[0]);
版画System.String
。
请参阅MSDN的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
因此有必要返回它们的枚举。