无法使用隐藏方法继承接口

时间:2013-06-14 21:09:18

标签: c# .net class interface

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

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

'xxx.xxx.xxx.xxx'未实现继承的抽象成员'xxx.xxx.xxx.Foo(string,xxx.xxx.xxx)'

我使用对象浏览器进行搜索并意识到它无法使用。隐藏的可能是因为它不是为了不被遗传?

我必须找到一种方法来完成这项工作。我怎样才能找到正确的签名?

提前感谢您对此事的帮助 MJ

1 个答案:

答案 0 :(得分:0)

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

namespace Xxx
{
  public abstract class TheirType
  {
    // accessible instance constructor
    protected TheirType()
    {
    }

    // inaccessible abstract member
    internal abstract void TheMethod()
    {
    }
  }
}

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

如果TheirType的作者

,那会更友好
  • 确定其类型应允许从外部继承,因此TheMethod publicprotected internalprotected; OR
  • 使所有实例构造函数无法从外部访问,即internalprivate,以显示它们不允许人们从其他程序集继承TheirType