gpt4 book ai didi

c# - 从 IEnumerable 获取类型 T

转载 作者:IT王子 更新时间:2023-10-29 03:36:18 26 4
gpt4 key购买 nike

有没有办法检索类型 T来自 IEnumerable<T>通过反射(reflection)?

例如

我有一个变量 IEnumerable<Child>信息;我想通过反射获取 Child 的类型

最佳答案

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 .

关于c# - 从 IEnumerable<T> 获取类型 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/906499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com