2015-07-02 81 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属性标记要序列化的所有成员。 ...