将通用T的类型解析为C#中的特定接口

Resolve type of generic T to a specific interface in C#

我想找到通用T的类型,并将其进行比较,以在运行时检查它是哪个接口。

因此,这可以在运行时找到t的类型:

1
Type interfaceName = typeof(T); // gives me the specific interface type

但是当我试图检查它是否等于接口的类型时,我没有得到预期的响应。

1
Type.GetType("IMyInterface"); //this returns null

我如何比较这两者?


如果要使用Type.GetType,需要传递程序集限定名。

但是,看起来您只是想检查接口的名称,因此您可以简单地使用

1
2
Type interfaceType = typeof(T);
string interfaceName = interfaceType.Name;

您也可以简单地检查一下typeof(T) == typeof(IMyInterface)是否


GetType方法需要完全限定名。所以你需要:

1
Type.GetType("YourNamespace.IMyInterface");

或者,如果您有一个对声明IMyInterface的程序集的引用,那么只有typeof(IMyInterface)可以完成这项工作。


可能是这样的:

1
typeof(T).Name =="IMyInterface"