所以我在 DLL 中有一个抽象基类和该类的子类。我希望孩子是公开的,但基础是私有的,这样就不能在 dll 之外访问它。
我怎么做?
你没有,你也不能。
如果要将类公开为public
,则基类型必须为public
。另一种选择是使用public interface
, 并且仅通过 公开类型interface
(可能在某处使用工厂方法来创建实例)。
最后一种选择是封装基类而不是继承它。
制作它public
,制作所有构造函数internal
(如果您使用的是默认构造函数,请添加一个无参数构造函数来覆盖它)。
然后在公开且未密封的情况下,它不能被外部代码子分类。
只是为了澄清我在对@Marc Gravel 的回答的评论中所说的话,你可以
public ChildClass : ParentClass
{
}
public ParentClass
{
internal void MethodIdontWantToExpose()
{
}
}
那说一个interface
可能是最好的解决方案