不能继承带有隐藏方法的接口
本文关键字:方法 接口 隐藏 继承 不能 | 更新日期: 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
的作者
- 决定它们的类型应该允许从外部继承,因此使
TheMethod
为public
、protected internal
或protected
;或 - 使所有实例构造函数从外部不可访问,即
internal
或private
,以明确它们不允许人们从其他程序集继承TheirType
。