2010-01-27 120 views
3

是否有人知道C#有關在抽象類或父類中的公共屬性後面定義屬性可見性(私有或受保護)的方式的最佳實踐。抽象類中的屬性可見性

在其他的世界什麼是在默認情況下(爲什麼)的最佳實踐之間:

public abstract class MyClass 
{ 
    private string myAttribute; 

    public string MyAttribute 
    { 
     get { return myAttribute; } 
     set { myAttribute = value; } 
    } 
} 

public abstract class MyClass 
{ 
    protected string myAttribute; 

    public string MyAttribute 
    { 
     get { return myAttribute; } 
     set { myAttribute = value; } 
    } 
} 

我認爲孩子的類都應具有直接處理這個保護屬性的方式,但它可能不是一個好的做法,如果吸氣劑或二手藥含有更多的代碼...

你對此有何看法?

謝謝。

回答

8

非常量字段應該總是保密的。如果因爲某些原因無法使用自動屬性而需要使用字段,請確保它是私人的。兒童班應通過公共或受保護的財產訪問它。

+0

對於這個問題,我想甚至包含類應該只能通過屬性訪問。 – 2010-01-27 15:38:18

2

絕對私密。然而,有一個更簡單的方法來做你正在做的事情:

public abstract class MyClass 
{ 
    public string MyAttribute { get; set; } 
} 

這是完全相同的事情,但它更容易維護。

+1

+1,這在沒有特殊處理需要在getters/setters中完成時很有用。你也可以限制公共和私人獲取者和制定者的可見性。 – FrustratedWithFormsDesigner 2010-01-27 15:43:52

+0

好的,我不知道自動實現的屬性! – Vince 2010-01-27 15:50:10

2

絕對私密。當定義一個抽象類,我只是做保護的項目如果符合以下

  1. 子類必須重寫或訪問
  2. 外部類應該不能訪問

在行爲這種情況下,你已經給外部類訪問該值。保護它並不會給子類帶來任何真正的優勢。

+0

感謝你們所有人 – Vince 2010-01-27 15:40:40

+0

我對你的答案大加讚賞,指出它應該是正確的答案。私人支持字段絕對是常態,但在極少數情況下,您需要重寫屬性。 – 2014-02-09 21:52:29

0

我發現公共獲取的一個限制,受保護的設置:評論。 因爲意見不應該成爲公衆和保護的同時,尊重了StyleCop: - 評公衆:獲取評論 - 評爲保護:獲取或設置評論

我不想兩個知名度做2個屬性,所以我解決它quiclky與下面的評論:獲取ot設置(保護)評論。

如果您有更好的練習,歡迎。