0

私はWPFプロジェクトに取り組んでおり、オブジェクトのプロパティへの変更がMemberwiseCloneに反映される1つのケースを除いて、プロジェクト全体でうまく機能する1レベルの変更を元に戻す非常に簡単な方法を実装しました。

私がやっていることは、そのオブジェクトのプロパティを追加または編集する前に、オブジェクトで MemberwiseClone を実行することです。ユーザーが元に戻したい場合は、各プロパティを MemberwiseClone オブジェクトから現在のオブジェクトにコピーします。

私は WPF バインディングを使用しているため、MemberwiseClone の使用は魅力的です。これまで、プロパティに加えられた変更は MemberwiseClone に反映されていなかったからです。今回は、別のオブジェクトの ObservableCollection であるオブジェクトにプロパティがあり、ObservableCollection に項目を追加すると、MemberwiseClone によって作成されたオブジェクトにも追加され、完全に元に戻すことはできません。

これを回避する方法はありますか?これについての考えは大歓迎です。

ありがとう。

4

1 に答える 1

1

Object.MemberwiseClone Remarksによると、オブジェクト参照はObservableCollectionコピーされますが、参照されたオブジェクト自体はコピーされません。したがって、元に戻すコレクションは、変更された可能性のある同じオブジェクトを参照します。

浅いコピーではなく、深いコピーが必要です。How do you do a deep copy an object in .Net (特に C#) をご覧ください

于 2012-05-04T21:58:25.853 に答える