2015-07-02 117 views
2

虛擬屬性是否需要[DataMember]屬性?虛擬屬性是否需要[DataMember]屬性?

[DataMember] 
public string Title { get; set; } 

[DataMember] 
public virtual ApplicationUser User { get; set; } 

或者這是正確的做法:

[DataMember] 
public string Title { get; set; } 

public virtual ApplicationUser User { get; set; } 
+0

所以只有當我需要訪問wcf客戶端上的虛擬屬性時才需要它? –

+1

它與虛擬或沒有關係。問題是:你想'User'被序列化嗎?是的,如果你想在客戶端訪問它。 –

+0

謝謝。這就是我需要知道的。如果你願意,你可以創建一個答案,以便我可以接受它作爲我的解決方案。 –

回答

2

這是不相關的財產是虛擬的或沒有。如果你想要一個屬性被序列化(即對WCF客戶端可見),你將它標記爲DataMember

請記住,如果你這樣做,ApplicationUser也應該是DataContract,否則你會得到一個異常喜歡

類型「ApplicationUser」不能被序列化。考慮使用DataContractAttribute屬性標記它,並使用DataMemberAttribute屬性標記要序列化的所有成員。 ...