好吧,这可能听起来很奇怪,但我需要测试传递给我的object
是ModelItem<T>
类型,我不关心T
实际上是什么。换句话说,如果它是ModelItem<int>
,ModelItem<string>
或ModelItem<Foo>
,那么我需要返回true
。
注意:如果我是ModelItem<T>
的所有者,我认为只需定义IModelItem
类型的界面并将其指定为ModelItem<T>
定义的一部分,但我不会&# 39;可以访问来源。
答案 0 :(得分:2)
当然,这是可能的:
public bool IsIt(object thing)
{
var type = thing.GetType();
if (type.IsGenericType)
{
return type.GetGenericTypeDefinition() == typeof(MyThing<>);
}
return false;
}
测试它:
IsIt(new MyThing<int>()).Dump();
IsIt(new MyThing<string>()).Dump();
IsIt(new MyThing<Foo>()).Dump();
IsIt(5).Dump();
返回
True
True
True
False