我有一个派生(说B)类,其中我想访问基类的一些属性(说A),但不是所有的属性的基类。例如。我有5个属性,说我想继承派生类的基类中的名称,年龄,名称,位置和薪水。但是,我想接取所有的财产接受的基类的“工资”属性(薪水属性不应由派生类B.访问我将如何实现这一目标提前如何限制派生类访问C#中基类的属性之一
感谢。
我有一个派生(说B)类,其中我想访问基类的一些属性(说A),但不是所有的属性的基类。例如。我有5个属性,说我想继承派生类的基类中的名称,年龄,名称,位置和薪水。但是,我想接取所有的财产接受的基类的“工资”属性(薪水属性不应由派生类B.访问我将如何实现这一目标提前如何限制派生类访问C#中基类的属性之一
感谢。
public class Employee
{
public double Salary { get; private set; }
}
假设:
Salary
但是,如果您希望外部类写入Salary
而不是Employee
的子类,那么这是不可能的。子类将至少具有至少作为外部类的特权。
如果你不希望任何人能够读取/写入该属性(除Employee
类),那么就让它私有,像这样
public class Employee
{
private double Salary { get; set; }
}
我可以想象一个_terribly terrible_“选项”,您可以在分析调用堆栈的属性上使用公共setter。如果callstack显示写入来自派生类,它将忽略或抛出一个异常,并从其他外部类中允许它。 (和方法内联会把它扔出窗口)编辑:或者也许你可以分析调用者信息属性,如果它被重写为一种方法(不知道你是否可以在属性上使用它们) –
马克这个属性为私营:
class A
{
protected string Name { get; set; }
...
private string Salary { get; set; } // derived classes has no access now
}
通过* access *,您的意思是*写信给*? –
它是私有的? –
如何使用'protected'? – ALZ