我需要查找某个类型是否是某种泛型类型。
class MyType<T> {}
var instance = new MyType<int>();
var type = instance.GetType();
此检查不起作用,但这是我要检查的内容。如果类型属于该泛型类型,则无论T
是什么。
type == typeof( MyType<> )
这确实有效,但感觉很脏。它也可能是错误的,因为它不是FullName
。
type.Name == typeof( MyType<> ).Name
我假设有办法做到这一点,但我还没找到。使用IsAssignableFrom
将不起作用,因为我需要知道当前类型,而不是其中一个父类是否相同。
答案 0 :(得分:6)
如果对象的具体类型为MyType<T>
,则此方法有效。它不适用于从MyType<T>
派生的类型的实例,如果MyType<T>
是接口类型,则无效。
if (type.IsGenericType
&& type.GetGenericTypeDefinition() == typeof(MyType<>))