如何获取接口成员列表

有没有办法获得接口成员列表? 我知道System.Reflection.MemberInfo,但它包含对象中的所有内容,而不仅仅是某个接口。

这是程序,我不知道如何获得界面,因为我没有写它,但它是Ascom标准( http://ascom-standards.org )的一部分。

public static void Test1() { Console.WriteLine("mark1"); // this shows up... var type = typeof(Ascom.Interface.ITelescope); var members = type.GetMembers(); Console.WriteLine(members.Count); // gives 0 foreach (var member in members) { Console.WriteLine(member.Name); //nothing from here } Console.WriteLine("mark4"); // ...as well as this } 

如果是COM接口,则应禁用“嵌入互操作类型”,否则只会在程序集中插入已使用的成员。 我猜你不会在程序集中使用该接口的任何方法/属性,这就是为什么它们永远不会被插入,所以你可以用reflection列出它们。 (谢谢OWO)

来自MSDN:

 typeof(IList).GetMembers() 

获取当前Type的成员(属性,方法,字段,事件等)。

您只需要询问接口类型的成员:

 var type = typeof(IConvertible); var members = type.GetMembers(); foreach (var member in members) { Console.WriteLine(member.Name); // ToInt32 etc } 
 var t = typeof(IMyInterface); foreach( var m in t.GetMethods() ){ Debug.WriteLine(m.Name); } 

要获取某个接口的成员列表,您可以这样做:列出该接口的成员,正如其他人指出的那样:

 var members = interfaceType.GetMembers(); 

但是,如果您想知道某些类型的成员实现该接口,您可以使用GetInterfaceMap()并检查TargetMethods字段 :

 var members = type.GetInterfaceMap(interfaceType).TargetMethods;