确定myinstance是否为Generic <T>

wit*_*ith 1 c# generics

给定泛型类定义BaseClass<T>,是否可以测试这种情况?

if (myvar is BaseClass<>)

我想知道myvar是否来自泛型类,但我不知道(或关心)T可能是什么.

我认为答案是否定的......我的备份计划是通过这个洞穴myvar.GetType().ToString().Contains("BaseClass<")或其他东西.

SLa*_*aks 9

像这样:

if (myVar.GetType().IsGenericType
 && myVar.GetType().GetGenericTypeDefinition() == typeof(BaseClass<>))
Run Code Online (Sandbox Code Playgroud)

  • 如果提问者真的意思是"衍生自"而不是"确切类型",那么提问者的建议和这个提法都不正确.正确的解决方案是在循环中使用上述方法,该循环不仅检查当前类型,还检查其所有基类型. (2认同)