是否可以使一个C#基类只能在它被编译成的库程序集中,而使其他从它继承的子类public?
例如:
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
我对这个特定库的解决方案是使基类公共和抽象,并用“不要直接使用这个基类”来记录它.我还使基类的构造函数内部,这有效地防止了外部客户端使用或继承类.
(这是一个耻辱,因为其他O-O语言让我有隐藏的基础类.)
解决方法
不幸的是您不能从内部或私人类派生一个公共类.
您需要暴露基类,或者您需要声明所有类似类的所有方法.如果您再次声明所有方法,那么创建一个帮助类可能很有用,该类具有实际的实现.仍然是相当多的样板.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。