gpt4 book ai didi

.NET 反射 : Detecting IEnumerable

转载 作者:行者123 更新时间:2023-12-04 01:31:32 26 4
gpt4 key购买 nike

我正在尝试检测 Type 对象的特定实例是否是通用的“IEnumerable”...

我能想到的最好的是:

// theType might be typeof(IEnumerable<string>) for example... or it might not
bool isGenericEnumerable = theType.GetGenericTypeDefinition() == typeof(IEnumerable<object>).GetGenericTypeDefinition()
if(isGenericEnumerable)
{
Type enumType = theType.GetGenericArguments()[0];
etc. ...// enumType is now typeof(string)

但这似乎有点间接 - 有没有更直接/优雅的方法来做到这一点?

最佳答案

您可以使用

if(theType.IsGenericType && theType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
{
Type underlyingType = theType.GetGenericArguments()[0];
//do something here
}

编辑:添加了 IsGenericType 检查,感谢有用的评论

关于.NET 反射 : Detecting IEnumerable<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1649888/

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