从IEnumerable获取类型T

从IEnumerable获取类型T,第1张

从IEnumerable获取类型T
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
因此有必要返回它们的枚举。

编辑: 虽然,我不得不说,对于一个类实现

IEnumerable<T>
多个对象是一个糟糕的主意
T



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5559754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存