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