检查由 Type 变量定义的类型是否实现了 .NET Portable 中的接口

Check if a type defined by a Type variable implements an interface in .NET Portable

我的通用应用程序中有可移植组件,因此该组件使用 .NET Portable v.4.6。在该组件中,我试图检查 Type 变量 myType 定义的类型是否实现了特定接口 IMyinterface

如果我使用的是标准 .NET 框架,我可以检查 myType.GetInterface("MyClass.IMyinterface") != null

或者如果

(typeof(IMyinterface).IsAssignableFrom(myType)) == true

(参见:http://www.hanselman.com/blog/DoesATypeImplementAnInterface.aspx

但是,这些方法在 .NET Portable v.4.6 中不可用。在这种情况下,我如何进行此项检查有什么想法吗?

这不会抛出任何异常,但是,myType 现在可以为 null。

var myObject = myType as IMyinterface

//Error proof the assignment to interface.
if (typeof(IMyinterface) == myType.GetType())
{
    //code
}

或者

if (myType != null)
{
     //Code
}

或者

   if (myType is IMyinterface)
   {

   }

我猜你需要添加以下内容:

using System.Reflection;

然后像这样检查:

(typeof(IMyinterface).GetTypeInfo().IsAssignableFrom(myType.GetTypeInfo())) == true