不能继承带有隐藏方法的接口

本文关键字:方法 接口 隐藏 继承 不能 | 更新日期: 2023-09-27 18:18:23

我正在使用VS 2010编写一个c#类库。我引用了一个我认为是用非托管编译器编写的DLL,因为我不相信你可以在。net托管代码中将方法标记为私有。

当我尝试从引用的DLL继承接口并实现抽象类时,它抱怨我没有实现特定的方法。我手动尝试了,但签名显然不匹配,因为它说没有找到合适的方法来覆盖。

xxx.xxx.xxx。不实现继承的抽象成员Xxx . Xxx . Xxx . Xxx。Foo(字符串,xxx.xxx.xxx)

我使用对象浏览器搜索,意识到它对我不可用。它被隐藏起来可能是因为它本来就不应该被继承?

我得想个办法让这件事成功。我怎样才能找到正确的签名?

提前感谢你在这件事上的帮助乔丹

不能继承带有隐藏方法的接口

根据您提供的有限信息,我的猜测是DLL有一个类,看起来像:

namespace Xxx
{
  public abstract class TheirType
  {
    // accessible instance constructor
    protected TheirType()
    {
    }
    // inaccessible abstract member
    internal abstract void TheMethod()
    {
    }
  }
}

这让人们首先认为他们可以从程序集之外的TheirType派生,因为该构造函数是可访问的。但是它们没有机会实现抽象成员TheMethod,因为internal成员在另一个程序集中是不可访问的。

如果TheirType的作者

  • 决定它们的类型应该允许从外部继承,因此使TheMethodpublicprotected internalprotected;或
  • 使所有实例构造函数从外部不可访问,即internalprivate,以明确它们不允许人们从其他程序集继承TheirType
相关文章: