如何发现一个方法是否实现了特定的接口
本文关键字:实现 接口 是否 一个 何发现 发现 方法 | 更新日期: 2023-09-27 18:08:09
我有一个方法的MehtodBase,我需要知道该方法是否是特定接口的实现。所以如果我有下面的类:
class MyClass : IMyInterface
{
public void SomeMethod();
}
实现接口:
interface IMyInterface
{
void SomeMethod();
}
我希望能够在运行时发现(使用反射)如果某个方法实现了IMyInterface。
可以使用GetInterfaceMap
。
InterfaceMapping map = typeof(MyClass).GetInterfaceMap(typeof(IMyInterface));
foreach (var method in map.TargetMethods)
{
Console.WriteLine(method.Name + " implements IMyInterface");
}
您可以使用Type.GetInterfaceMap()
:
bool Implements(MethodInfo method, Type iface)
{
return method.ReflectedType.GetInterfaceMap(iface).TargetMethods.Contains(method);
}
如果你不需要使用反射,那就不要使用。它的性能不如使用is
操作符或as
操作符
class MyClass : IMyInterface
{
public void SomeMethod();
}
if ( someInstance is IMyInterface ) dosomething();
var foo = someInstance as IMyInterface;
if ( foo != null ) foo.SomeMethod();