可访问性不一致:基类比类更难访问

时间:2012-11-07 13:06:43

标签: c# dll access-specifier

所以我在DLL和该类的子类中有一个抽象基类。我希望孩子们是公共的,但是私人的基础是不能在dll之外访问的。

我该怎么做?

3 个答案:

答案 0 :(得分:28)

你没有,你也做不到。

如果您希望将该类公开为public,则基类型必须public。另一个选择是拥有public interface,并且只通过interface公开类型(可能在某处创建实例的工厂方法)。

最后一个选项是封装基类而不是继承它。

答案 1 :(得分:14)

使它public,使所有构造函数internal(如果你使用默认构造函数,添加一个无参数构造函数来覆盖它)。

然后在公开而非密封的情况下,它不能被外部代码细分。

答案 2 :(得分:1)

只是为了澄清我在@Marc Gravel的回答中所说的话,可以

public ChildClass : ParentClass
{

}

public ParentClass
{
   internal void MethodIdontWantToExpose()
  {

  }

}

那说interface可能是最好的解决方案