我有一个类ClassA
,它是其他类的基类。我希望这个类构造函数是内部的和受保护的,以便它不能从我的程序集外部继承和实例化(我无法使它密封,因为我有其他内部类继承它,你可以看到我的其他相关的问题here)所以我将其修改为:
public abstract ClassA{
internal protected ClassA(){
}
}
我被告知这不会起作用,因为组合internal protected
被解释为internal
或protected
,它显然只构造了构造函数protected
:((可见从外面看)
问题
internal protected
被解释为internal
或protected
而不是internal
和protected
?答案 0 :(得分:6)
指定内部就足够了。
这是一个抽象类 - 暗示它的构造函数是受保护的,因为你不能创建它的实例 - 你什么都不能但是继承它。
答案 1 :(得分:4)
如果将构造函数指定为 internal ,它将对程序集中的所有类可见,并且对于其外部的类不可见,这正是您想要实现的。简而言之,如果A类的构造函数或类成员是:
因此,在您的情况下,您只需要将构造函数指定为内部。
答案 2 :(得分:0)
你试过吗?
Msdn告诉我们
构造函数可以标记为public,private,protected,internal或 受保护的内部。
http://msdn.microsoft.com/en-us/library/ms173115%28v=vs.100%29.aspx