私は、シリアライズ/デシリアライゼーション(メモリとバックへの)を介してオブジェクトの深いクローンを扱うSOと他の多くのソリューションを見つけました。シリアライゼーションのないオブジェクトのクローニング
クローンを作成するクラスには、[Serializable]
とマークする必要があります。 DataContractSerializer
をXMLにシリアライズするために、[DataContract]
とマークされたクラス(ほとんどのもの)を持っています。
私は[Serializable]
属性を導入しました。これらのクラスインスタンスの一部の深いクローンが必要なためです。しかし、現在では、DCSを介したシリアライゼーション/デシリアライゼーションには何も起こりません。なぜなら、デシリアライズ時に別のXML要素が必要になるというエラーです。 [Serializable]
を削除した場合、エラーはなくなります。
私のオプションは何ですか?私はただオブジェクトを可能な限りシンプルに深くクローンしたいだけです。
リフレクションを使用することもできますが、パフォーマンスにもわずかなオーバーヘッドが発生する可能性があります。 – IDWMaster
なぜ[Serializable]が必要なのですか?あなたは深いクローンのためにDCSを使うことができます...? DCS経由でMemoryStreamにシリアル化するだけです...? –
はい私はちょうど何かを思い付いた、私はそれを投稿します – mare