0

私のアプリケーションでは、すべてのデータを静的リストAllDataに保存します。

public class GenericList<T> : BindingList<T>, IList<T> 

ユーザーの変更をAllDataの選択した項目に設定しましたが、問題は変更のキャンセルに関するものです。ユーザーが変更をキャンセルすると、データベースからすべてのデータを再度取得します。これは有用な解決策ではありません。時間がかかり、新しいデータベース接続などを作成します。

変更前の古い価値観をすでに持っていると思います。最初の値をバックアップできます。ユーザーが変更をキャンセルした場合は、バックアップされた値を復元します。ここで問題が発生します。ObjectCopierクラスを介してAllDataの選択したアイテムのクローンを作成しようとしました

public static T Clone<T>(T source)

、そして次のようなエラーが発生しました

タイプ 'Class XYZ' はシリアライズ可能としてマークされていません。

はい、いくつかのシリアル化されたクラスがあり、その他はシリアル化されていません。複製しようとしているAllDataの選択項目には、作成したすべてのデータ型が含まれています。

すべてのクラスをシリアル化する必要がありますか? もし、そうなら; これにより問題が発生する可能性がありますか (セキュリティ、パフォーマンスなど)? または、操作をキャンセルするための便利な方法はありますか?

4

0 に答える 0