如何解决从System.Type实例获取基本类型的通用参数
我有一个System.Type
实例,我想执行以下操作:
- 检查类型是否继承自
IEnumerable<>
- 如果是,请获取其继承自
IEnumerable<>
类型的通用参数的类型
我不能简单地使用以下代码:
public Type GetGenericEnumerableArgumentType(Type type)
{
if (typeof(IEnumerable<>).IsAssignableFrom(type))
{
// This would be incorrect - see below
return type.GetGenericArguments().First();
}
return null;
}
如果通过以下任何一种方式定义输入类型,则以上代码将无法正常工作:
public class MyCustomEnumerable : IEnumerable<double>
{
...
}
public class AnotherCustomEnumerable<T,U> : IEnumerable<U>
{
...
}
在第一种情况下,我想要获得typeof(double)
,在第二种情况下,我想要获得typeof(U)
。有没有简单的方法可以做到这一点?一种选择是递归检查type.BaseType
,但我想必须对此问题有一个更简单的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。