【发布时间】:2012-10-27 13:11:59
【问题描述】:
所以我在 DLL 中有一个抽象基类和该类的子类。我希望孩子是公开的,但基础是私有的,这样就不能在 dll 之外访问它。
我该怎么做?
【问题讨论】:
标签: c# dll access-specifier
所以我在 DLL 中有一个抽象基类和该类的子类。我希望孩子是公开的,但基础是私有的,这样就不能在 dll 之外访问它。
我该怎么做?
【问题讨论】:
标签: c# dll access-specifier
你没有,你也不能。
如果要将类公开为public,则基类型必须为public。另一种选择是使用public interface,并且仅通过interface 公开类型(可能在某处使用工厂方法来创建实例)。
最后一个选择是封装基类而不是继承它。
【讨论】:
internal 会阻止外部人员轻松访问;当然,通过反思,他们无论如何都可以做大部分事情。
只是为了澄清我在 @Marc Gravel 的回答中在 cmets 中所说的话,您可以
public ChildClass : ParentClass
{
}
public ParentClass
{
internal void MethodIdontWantToExpose()
{
}
}
也就是说interface 可能是最好的解决方案
【讨论】:
将其设为public,将所有构造函数设为internal(如果您使用的是默认构造函数,请添加一个无参数构造函数来覆盖它)。
那么在公开且未密封的情况下,它不能被外部代码子分类。
【讨论】: