您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

从IEnumerable获取类型T

从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

请参阅MSDNType.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

其他 2022/1/1 18:16:40 有531人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶