我不认为这是可能的,但我很好奇.是否可以在其子类中的超类私有中创建受保护的变量.
例如,我有三个类SuperClass,SubClass : SuperClass和SubCLass2 : SubClass.
我希望能够访问的变量protected string[] commands是在SuperClass从SubClass从,但阻止访问它SubClass2.
如果这是不可能的,那么无论如何都能达到同样的效果吗?
我不认为这是可能的,但我很好奇.是否可以在其子类中的超类私有中创建受保护的变量.
不会.就个人而言,我会首先避免使用变量非私有 - 我会提供受保护的财产.你可以创建一个新的属性来"隐藏"基本属性......但这对我来说是糟糕的设计.
我想不出有什么方法可以绕过从大孩子的角度来隐藏,而不用改变其中一个类,但对我来说这感觉很随意:
public class Base
{
private int foo = 5;
protected int Foo { get { return foo; } }
}
public class Child : Base
{
protected new int Foo { get { return 0; } }
}
public class GrandChild : Child
{
// Aargh, can't get at the original Foo...
}
Run Code Online (Sandbox Code Playgroud)
你为什么要这样做?也许你应该密封你的直接子类,并强迫其他类使用组合代替......
编辑:正如评论中所解释的那样,听起来这是一种情况,即制作属性(我仍然会使其成为返回私有字段的属性)内部是合适的.这使得属性可以访问同一程序集中的所有其他代码,但不能访问其他程序集.
| 归档时间: |
|
| 查看次数: |
3084 次 |
| 最近记录: |