是否有可能只作中的库组装它编译成可访问的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#不允许基类具有比子类更严格的访问,但有获得同样的效果的一些其他合法的方式?
UPDATE
我对这个特殊的库解决方案是使基类public
和abstract
,并与记录它“不要直接使用这个基类”。 我还使基类的构造函数internal
,这有效地防止外部的客户端使用或继承的类。
(这是一个耻辱,因为其他面向对象的语言,让我有隐藏的基类。)