[英]Implementing interface signature in different class how to know which one to use
[英]How to know if a class redefines an interface
我有以下课程:
internal class Father : ICloneable
{
public object Clone() { ... }
public void Dispose() { ... }
}
internal class Son : Father { }
internal class Daughter : Father, ICloneable { }
我尝试使用具有反射功能的Type中的GetInterfaces方法检索接口,但Son和Daughter之间没有区别。 有没有一种方法可以找到仅在当前类级别声明的接口。
对于儿子而言,结果应该什么都没有,对于女儿而言,结果应该是可克隆的。
PS:我知道在子类中重新定义接口是没有用的,但这不是来自我的程序集...
您需要使用非托管的.NET元数据API而不是托管的反射API。 这篇博客文章解释了差异 。 具体来说, EnumInterfaceImpls
方法可为您提供所需的内容。 我还没有亲自使用托管代码中的非托管API,但是快速浏览一下SO可以为您提供许多使用该实例的示例。 我希望这回答了你的问题。 我不知道您要达到什么目标。 如果您需要实现一些代码实践策略检查器,我认为最好通过其代码模型API在IDE(VS)中实现它-然后您的代码可以推理C#源代码,而不是MSIL输出。 如果打算将该接口用作“不可继承”的标记接口,则最好使用属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.