Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “的等价物是什么?”;是";反射泛型类型的运算符?_C#_Reflection - Fatal编程技术网

C# “的等价物是什么?”;是";反射泛型类型的运算符?

C# “的等价物是什么?”;是";反射泛型类型的运算符?,c#,reflection,C#,Reflection,在C#中使用带有泛型类型的is运算符非常简单: if(new List())是IEnumerable){ //总是分支 } 但是在比较类型时呢?我希望我可以在这里使用Type.IsSubclassOf(Type),但是System.Collections.Generic.List实现System.Collections.Generic.IEnumerable——它没有扩展它。所以我假设这就是为什么会发生以下情况: var listType=typeof(列表); var enumerableT

在C#中使用带有泛型类型的
is
运算符非常简单:

if(new List())是IEnumerable){
//总是分支
}
但是在比较类型时呢?我希望我可以在这里使用
Type.IsSubclassOf(Type)
,但是
System.Collections.Generic.List
实现
System.Collections.Generic.IEnumerable
——它没有扩展它。所以我假设这就是为什么会发生以下情况:

var listType=typeof(列表);
var enumerableType=typeof(IEnumerable);
if(listType.IsSubclassOf(enumerableType)){
//永不分支
}
如果我有一个右值
类型的实例
,我可以很容易地使用
类型。IsInstanceOfType(对象o)
,但代码中的这一点与反映所讨论的
类型
的实例相去甚远


我是否在
类型
API中遗漏了什么?我是否被迫通过扩展方法滚动我自己的类型?

使用类型。IsAssignableFrom(类型)

使用类型。IsAssignableFrom(类型)

使用类型。IsAssignableFrom(类型)

使用类型。IsAssignableFrom(类型)

完整样本可在中的MSDN上获得。完整样本可在中的MSDN上获得。完整样本可在中的MSDN上获得。完整样本可在中的MSDN上获得。