DataContractSerializer
双方向エンティティをシリアル化する方法を理解するために、サンプルWCFサービスを実装しています。私は次のDataContractsを持っています。
[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
数は順番に関連付けられていますProcess
。Process
User
[OperationContract]
User GetUser();
WCFTestClientからこのメソッドを実行すると、例外が発生します。これは、UserでProcessOfUserをシリアル化するたびに、trunでUserが再度シリアル化されるためです。
これを回避するには、Process[DataContract]のUserOfProcessからDataMember属性を削除します。正常に動作します。
私の質問は、
1です。それはこの問題を解決する正しい方法ですか、それともIs there some other way to this
?[IgnoreDataMember]
また、シリアル化を回避するための属性も見つけました。2.プログラムで属性
を追加または削除できますか?[DataMember]