是否可以使 C# 基类只能在它编译到的库程序集中访问,同时使从它继承的其他子类公开?
例如:
using System.IO;
class BaseOutput: Stream // Hidden base class
{
protected BaseOutput(Stream o)
{ ... }
...lots of common methods...
}
public class MyOutput: BaseOutput // Public subclass
{
public BaseOutput(Stream o):
base(o)
{ ... }
public override int Write(int b)
{ ... }
}
在这里,我希望BaseOutput
我的图书馆的客户无法访问该类,但允许子类MyOutput
完全公开。我知道 C# 不允许基类比子类具有更严格的访问权限,但是还有其他合法的方法可以达到同样的效果吗?
更新
我对这个特定库的解决方案是制作基类public
和abstract
,并用“不要直接使用这个基类”来记录它。我还制作了基类的构造函数internal
,有效地防止了外部客户端使用或继承该类。
(很遗憾,因为其他 OO 语言让我有隐藏的基类。)