私のアプリケーションでは、すべてのデータを静的リストAllDataに保存します。
public class GenericList<T> : BindingList<T>, IList<T>
ユーザーの変更をAllDataの選択した項目に設定しましたが、問題は変更のキャンセルに関するものです。ユーザーが変更をキャンセルすると、データベースからすべてのデータを再度取得します。これは有用な解決策ではありません。時間がかかり、新しいデータベース接続などを作成します。
変更前の古い価値観をすでに持っていると思います。最初の値をバックアップできます。ユーザーが変更をキャンセルした場合は、バックアップされた値を復元します。ここで問題が発生します。ObjectCopierクラスを介してAllDataの選択したアイテムのクローンを作成しようとしました
public static T Clone<T>(T source)
、そして次のようなエラーが発生しました
タイプ 'Class XYZ' はシリアライズ可能としてマークされていません。
はい、いくつかのシリアル化されたクラスがあり、その他はシリアル化されていません。複製しようとしているAllDataの選択項目には、作成したすべてのデータ型が含まれています。
すべてのクラスをシリアル化する必要がありますか? もし、そうなら; これにより問題が発生する可能性がありますか (セキュリティ、パフォーマンスなど)? または、操作をキャンセルするための便利な方法はありますか?