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

时间:2014-09-09 14:18:26

标签: c# generics types

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

因此,这适用于在运行时查找T的类型:

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

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

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

我如何比较这两个?

3 个答案:

答案 0 :(得分:2)

如果您想使用Type.GetType,则需要传递assembly-qualified name

但是,看起来您只想检查界面的名称,因此您只需使用

即可
Type interfaceType = typeof(T);
string interfaceName = interfaceType.Name;

您也可以查看是否typeof(T) == typeof(IMyInterface)

答案 1 :(得分:1)

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

Type.GetType("YourNamespace.IMyInterface"); 

或者如果您对已声明IMyInterface的程序集有引用,则只需typeof(IMyInterface)即可完成此任务。

答案 2 :(得分:0)

也许是这样的:

typeof(T).Name == "IMyInterface"