检查由 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
我的通用应用程序中有可移植组件,因此该组件使用 .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