C# “的等价物是什么?”;是";反射泛型类型的运算符?
在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
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上获得。