今、私はシリアライズしてディスクに保存したいいくつかのクラスを持っています(フォーマットは関係ありません)。しかし、私が本当に必要とするのは、それぞれからいくつかの選択フィールドです。これらのフィールドはクラスによって異なりますが、すべて公開されています。私のアプローチ任意のクラスの保存とシリアライズ
public class A {
public string stringField;
public int intField;
...
}
public class B {
public float floatField;
public Object objectField;
...
}
は保存し、これらのフィールドをシリアル化だけでなく、各クラスの保存されたpublicフィールドを持つクラスのインスタンスを返すためにそれらをロードすることができ、簡単なコンテナクラスを持っていることでした。
私は、保存したいクラスのものと一致するフィールドを持つクラスを作ることでこれを行うことができます。
public class AStorage{
public string stringFieldStorage;
public int intFieldStorage;
...
public void StoreA(A a){
stringFieldStorage = a.stringField;
intFieldStorage = a.intField;
}
public A GetA(){
A a = new A();
a.stringField = stringFieldStorage;
a.intField = intFieldStorage;
return a;
}
}
これは動作しますが、それは、私はクラスの多くを必要とし、私は彼らが、彼らが保存しているクラスから受信したいものに応じてフィールドを与える必要がありますを意味します。
私はフィールドと名前をつかむために反射を使用してみましたが、それはずっと簡単です。私はDictonary<string, Object>
フィールド名でキーを付けて、次にそれらを参照することができます。しかし、それは私に少し不快感を感じ、私が間違ったことを全部やっているのかどうか疑問に思いました。クラスの保存とシリアライズにはどのような方法がありますか?
シリアル化は、.NET Frameworkによってよく解決される問題です。なぜ独自のソリューションを作成したいのですか? –