2011-12-19 45 views
1

我在我所有的控制器下面的代碼:當我將它們移動到基類中時,應該如何設置我的私有變量?

public class PackagesController : BaseController 
{ 
    private IAccountService _account; 
    private IDataSourceService _dataSource; 
    private IPackageService _package; 
    private IProductService _product; 
    private IContentService _content; 
    private ISequenceService _sequence; 

他們都來自BaseController繼承。我對公共,私人和受保護之間的區別有點困惑。我想我可以將它們移到BaseController中。如果我這樣做,那麼我應該使用私人,受保護或有其他修飾符。

回答

4

如果您希望派生類具有訪問權限,您可以使用Protected。私有會阻止派生類訪問,這不是你想要的。公共會允許任何代碼訪問它們,這裏不需要,因爲你通常不需要從外部訪問Controller成員。

+0

有時我根本不理解人的邏輯,就像這個問題一樣http://stackoverflow.com/questions/2070661/how-do-i-have-to-change-this-xml-string-so- that-xdocument-parse-reads-it-in/2070783#2070783 – Restuta

+0

@Restuta你實際上似乎已經得到了一個相當詳細的解釋。 –

+0

是的,這是愚蠢的,不是嗎? – Restuta

1

將這些變量從PackagesController移動到BaseController後,如果它們只用在BaseController中,那麼它們應該是私有的,如果它們將在兩個PackagesController中使用,那麼它們應該受到保護。我並沒有將你的變量用於'公開'。

1

將這些字段移動到BaseController後,似乎應該使用protected

私有表示該字段對於它聲明的類型是私有的。 - 移動之後,您只能在BaseController之內使用此字段。

受保護意味着字段也可以在所有派生類型中使用,但不能在外部使用。 - 移動之後,您將可以在BaseController and all derived ones內使用此字段。

公開意味着它可以隨處使用。 - 移動它們後,您將可以隨處使用這些字段。

您可以從MSDNthis SO question獲取更多信息。

相關問題