プロジェクトに取り組んでおり、ID フィールドの自動インクリメントに関して助けが必要です。
シリアル化に関しては、クラスのインスタンス化ごとに自動インクリメントしている静的変数の逆シリアル化に関して、最後にシリアル化されたときから ID を取得する最良の方法は何ですか。
例えば...
[Serializable]
class Category
{
private static int iCatID = 0;
private int iCategoryID;
private string sCategory;
public Category(string _sCategory)
{
iCatID++;
iCategoryID = iCatID;
sCategory = _sCategory;
}
}
このクラスのインスタンスを 5 つほど作成した後、シリアライズしてからデシリアライズiCatID
し、クラスのインスタンスをさらに作成し始めたときに中断したところから再開することを期待していましたが、もちろん 0 にリセットされていました。 .
私が知りたいのは、シリアライゼーションとデシリアライゼーションの間で自動インクリメント変数を追跡する方法と、ベストプラクティスは何ですか?
私はおそらくそれを行う2つの方法を考えました:
- クラスをシリアル化する場合、静的変数の値をグローバル設定に保存し、その値を再度取得して、デシリアライズ時にグローバル設定から静的変数を設定します。
- クラスを逆シリアル化するときは、linq を使用してクラスのすべてのインスタンスをクエリし、最大数を取得してから、それに応じて静的変数を設定します。
これに対処するもっとエレガントな方法があると確信しています。
どんな助けでも素晴らしいでしょう、ありがとう。