2013-12-10 47 views
2

在我們的項目中,我們使用了領域驅動設計模式和NHibernate映射。我們創建了域類,並且在這些類中我們創建了一些像這樣的屬性。在c#中的屬性設置中使用虛擬和受保護的關鍵字?

public class Telephone 
    { 
     public virtual int Id  { get; protected set;} 
     public virtual string Number { get; protected set;} 
     public virtual string Remarks { get; set;} 
    } 

在這裏所有的屬性都裝飾有虛擬關鍵字和一些與受保護的關鍵字。我的問題是這個類中使用虛擬和受保護的關鍵字是什麼?

回答

2

虛擬屬性用於延遲加載(here是對類似問題的答案),受保護的setter確保該值不能在這個階級之外,除了其後代以外,應該改變。

1

Nhibernate代理你的類,它需要虛擬,以便它能夠超載它們。如果我記得正確,受保護的是castle dynamicproxy支持的最低訪問級別。在過去,nhibernate使用了一個不同的代理生成器,允許您擁有私人設置器

相關問題