我有一個派生(說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