3

現在の状況

MVVMとNHibernateを使用するWPFアプリケーションがあります。すべての顧客を含むリストボックスを備えたマスター/詳細ウィンドウがあり、リストボックスのselectedItemは、詳細画面に顧客の詳細を表示するために使用されているオブジェクトです。詳細画面には、追加、編集、削除、保存、元に戻すボタンがあります。すべてが私が設定したバインディングで動作します。

問題

しかし、元に戻すボタンについては、元のCustomerオブジェクトのコピーを作成することを考えていたので、元に戻すボタンをクリックすると、フィールドは元の値の値にリセットされます。しかし、私の顧客オブジェクトにはAddressオブジェクトがあり、浅いコピーを使用すると、2つのオブジェクトはそのオブジェクトへの同じ参照を保持します。したがって、Addressオブジェクトからフィールドを変更すると、元のCustomerアドレスも変更されます。顧客の住所のディープコピーを作成することを考えていましたが、オブジェクトをシリアル化できません(モデルオブジェクトを変更することは私の管理下にありません)

  • シリアル化せずにディープコピーを実行する方法はありますか?
  • または、私が達成したい動作を達成するための標準的な方法はありますか?
4

1 に答える 1

2

データベースに戻り、顧客オブジェクトをリロードするだけです。これにより、表示しているデータがデータベース内のデータと一致し、同時実行の問題のリスクが軽減されます。

于 2013-03-06T17:33:16.753 に答える