IXmlSerializableを使用して、特定のタイプの要素を送信xmlに書き込んでいます。スキーマを実装し、項目を書き出しています。次のコードは例です。
public void IXmlSerializable.WriteXml(XmlWriter writer) {
// Write Out Class.
foreach (var item in myItems) {
DataContractSerializer ds = new DataContractSerializer(typeof(MyType));
ds.WriteObject(writer, item);
}
}
私が抱えている問題は、MyTypeが参照を使用するものとして宣言されていることです
[DataContract(IsReference = true)]
public class MyType { ...
したがって、アイテムがすでにxmlに書き込まれている場合は、参照である必要があります。
参照がすでにxmlに書き込まれているかどうかを確認するにはどうすればよいですか?私は、私が明示的に管理していない参照を無視しなければならないと考えています。そうすれば、自分の参照IDを作成し、自分のインスタンスを参照します。
複製してはならない参照を複製しているので、これは明らかに悪いハッキングされた妥協案です。
すでにシリアル化されているアイテムのIDを見つけることができるかどうかを確認するために、すでに書き込まれているものを見つける方法はありますか?
よろしく
クレイグ。