2013-09-05 61 views
0

我有一個派生(說B)類,其中我想訪問基類的一些屬性(說A),但不是所有的屬性的基類。例如。我有5個屬性,說我想繼承派生類的基類中的名稱,年齡,名稱,位置和薪水。但是,我想接取所有的財產接受的基類的「工資」屬性(薪水屬性不應由派生類B.訪問我將如何實現這一目標提前如何限制派生類訪問C#中基類的屬性之一

感謝。

+0

通過* access *,您的意思是*寫信給*? –

+4

它是私有的? –

+0

如何使用'protected'? – ALZ

回答

4
public class Employee 
{ 
    public double Salary { get; private set; } 
} 

假設:

  • 你想要的屬性被大家
  • 是可讀的,你不希望子類能寫Salary

但是,如果您希望外部類寫入Salary而不是Employee的子類,那麼這是不可能的。子類將至少具有至少作爲外部類的特權。

如果你不希望任何人能夠讀取/寫入該屬性(除Employee類),那麼就讓它私有,像這樣

public class Employee 
{ 
    private double Salary { get; set; } 
} 
+0

我可以想象一個_terribly terrible_「選項」,您可以在分析調用堆棧的屬性上使用公共setter。如果callstack顯示寫入來自派生類,它將忽略或拋出一個異常,並從其他外部類中允許它。 (和方法內聯會把它扔出窗口)編輯:或者也許你可以分析調用者信息屬性,如果它被重寫爲一種方法(不知道你是否可以在屬性上使用它們) –

0

馬克這個屬性爲私營:

class A 
{ 
    protected string Name { get; set; } 
    ... 
    private string Salary { get; set; } // derived classes has no access now 
} 
相關問題