흠 - 확실하지 않다면 올바른 방법 일지 모르지만 유형의 모든 인터페이스를 루핑 한 다음 인터페이스에 대한 메소드를 검색하면됩니다. 당신이 GetBaseDefinition()없이 막히는 것처럼 인터페이스를 반복하지 않고 직접 할 수 있는지 확실하지 않습니다. MethodInfo.Equals이 경우 작동하는지 확인하기 위해
이
MethodInfo interfaceMethodInfo = typeof(IMyInterface).GetMethod("MyMethod");
MethodInfo classMethodInfo = null;
Type[] interfaces = typeof(MyClass).GetInterfaces();
foreach (Type iface in interfaces)
{
MethodInfo[] methods = iface.GetMethods();
foreach (MethodInfo method in methods)
{
if (method.Equals(interfaceMethodInfo))
{
classMethodInfo = method;
break;
}
}
}
당신이 한 것 :이 사용할 수있는이 방법을 구현하는 하나의 방법 (MyMethod라는) 내 유형 (MyClass에) 내 인터페이스의
두 가지 메소드는 서로 다른 이름을 가지고있다. 나는 그것이 가능하다는 것을 몰랐다. 아마도 나는 C#이다.
이름으로 검색 할 수 없습니다. 이름은 일치 할 필요가 없습니다. 그것은 C# 규칙, 다른 언어 (VB)를 사용하면 원하는대로 재정의하는 메서드의 이름을 지정할 수 있습니다. –
위의 샘플이 이름과 일치하지 않으며 MethodInfo의 Equals 메서드와 일치합니다. 그저 MethodInfo.Equals가 이름 만 다를 경우 여전히 두 인스턴스가 같은 것으로 간주하는지 다시 확인해야한다는 의미였습니다. –
죄송하지만 코드에서 여전히 필요한 것을 수행하지 못합니다. 그것은 나에게 클래스 '메소드 정보를주지 않을 것이다 - 그것은 나에게 인터페이스'메소드 정보를 줄 것이다. 클래스가 인터페이스를 구현한다고 단언합니다. –