我如何知道何时在忽略inheritance的接口的类型中直接实现接口?

出现的问题是当我有一个实现接口的类,并扩展实现接口的类时:

class Some : SomeBase, ISome {} class SomeBase : ISomeBase {} interface ISome{} interface ISomeBase{} 

由于typeof(Some).GetInterfaces()返回带有ISome和ISomeBase的数组,我无法区分ISome是实现还是inheritance(如ISomeBase)。 作为MSDN我不能假设数组中接口的顺序,因此我迷路了。 方法typeof(Some).GetInterfaceMap()也不区分它们。

您只需要排除基类型实现的接口:

 public static class TypeExtensions { public static IEnumerable GetInterfaces(this Type type, bool includeInherited) { if (includeInherited || type.BaseType == null) return type.GetInterfaces(); else return type.GetInterfaces().Except(type.BaseType.GetInterfaces()); } } ... foreach(Type ifc in typeof(Some).GetInterfaces(false)) { Console.WriteLine(ifc); }