0

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

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

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

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

我必须想出一种方法来完成这项工作。如何找到正确的签名?

在此先感谢您对此事的帮助 mj

4

1 回答 1

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
  • 使所有实例构造函数无法从外部访问,即,internal或者private明确表示它们不允许人们TheirType从其他程序集继承。
于 2013-06-14T21:52:38.163 回答