我正在实现一个示例 WCF 服务以了解如何DataContractSerializer
序列化双向实体。我有以下数据合同。
[DataContract]
public class Process
{
[DataMember]
public string ProcessName { get; set; }
[DataMember]
public string Memory { get; set; }
[DataMember]
public User UserOfProcess { get; set; }
}
[DataContract]
public class User
{
[DataMember]
public string UserID { get; set; }
[DataMember]
public string UserName { get; set; }
[DataMember]
public List<Process> ProcessesOfUser { get; set; }
}
正如您可能注意到的那样,User
有 number ofProcess
并且 eachProcess
又User
与它相关联。
[OperationContract]
User GetUser();
当我从 WCFTestClient 运行此方法时,我得到一个异常,这是可以理解的,因为每当我们在 User 中序列化 ProcessOfUser 时,它都会再次序列化 User。
为了避免这种情况,我从Process[DataContract] 中的 UserOfProcess 中删除了 DataMember 属性。它工作正常。
我的问题是,
1.这是解决这个问题的正确方法,还是Is there some other way to this
?我还找到了[IgnoreDataMember]
避免其序列化的属性。
2. 我可以通过[DataMember]
编程方式添加或删除属性吗?