繁体   English   中英

如何知道一个类是否重新定义了接口

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM