protected internal怎么无效吗?
我想要实现:基类的部分属性只能在本程序集的子类才能看到,即某些属性非本程序集无法看到、非子类无法看到我是下面这样写的其中Prop1属性就是我想要控制的,即想要类A可以访问,类B、C不能访问,但按下面的写法写,结果类B、类C仍然能访问Prop1(感觉和public一样了,汗),而类B不能访问Prop2、类C不能访问Prop3(这两个正常)
请问这是什么原因???
程序集1
public class BaseClass
{
protected internal string Prop1 { get; set;}
protected string Prop2 { get; set;}
internal string Prop3 { get; set;}
public string Prop4 { get; set;}
}
public class A : BaseClass
{
……
}
public class B
{
……
}
程序集2
public class C : BaseClass
{
……
}
--------------------编程问答-------------------- protected internal是两个单词权限的并集,不是交集。即本程序集内或派生类都可以访问。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- protected internal
The type or member can be accessed by any code in the assembly in which it is declared, or from within a derived class in another assembly. Access from another assembly must take place within a class declaration that derives from the class in which the protected internal element is declared, and it must take place through an instance of the derived class type.
来自msdn:
Access Modifiers (C# Programming Guide)
http://msdn.microsoft.com/en-us/library/ms173121.aspx --------------------编程问答-------------------- 试一试用Internal 修饰BaseClass,成员用protect. --------------------编程问答--------------------
那我想要交集的效果怎么办,就是某些属性不想被其他类库访问,并且只能子类里访问 --------------------编程问答--------------------
如果用Internal基类修饰那其他程序集都不能访问这个类了 --------------------编程问答--------------------
那估计没啥办法了。
有个笨方法,就是加入一个基类继承自BaseClass,修饰为Internal,把外面不让访问的成员放到新类中。 --------------------编程问答-------------------- 基本上看了LZ的问题,有点震惊 --------------------编程问答-------------------- 明显不是一个类的范畴了,拆成两个 --------------------编程问答--------------------
唉,算了就只用internal吧,反正本程序集都是自己写能访问也没所谓 --------------------编程问答--------------------
有什么震惊,请说,谢谢
--------------------编程问答--------------------
怎么拆? --------------------编程问答-------------------- 可以把基类构造函数做成internal,其它做成protected。这样程序集外无法派生,程序集内只有派生类能访问成员。 --------------------编程问答-------------------- 回11# 大家都混饭,看谁更能混吧。闪了。
补充:.NET技术 , ASP.NET