に関与しているとき、私は、オブジェクトのインスタンスのリストを保持しているManagerと呼ばれるシングルトンクラスがあります。シリアライズとデシリアライズの参照をC#
static class Manager
{
static List<Foo> Foos = new List<Foo>();
}
を、私は、その後の参照を使用するクラスと呼ばれるメーターを使用して、オブジェクトインスタンスのコレクションを持っています
class Meter
{
public Foo MyFoo = null;
}
...
public void CreateMeter(int UserChoice)
{
Meter MyMeter = new Meter();
MyMeter.MyFoo = Manager.Foos[UserChoice];
}
アプリケーションがメーターのすべてのインスタンスと一緒にFOOSにはFooのインスタンスをシリアライズするプロジェクトファイルを保存します。リスト内の項目FOOSへ。
私の問題は、この配置を逆シリアル化する方法です。現在、私は次の操作を行います。
- がMYFOOプロパティにはFooのインスタンスを含んメートルのインスタンスをデシリアライズ
- Manager.Foosを再構築するためにはFooのプロジェクト全体のインスタンスをデシリアライズ
- 検索Manager.FoosとMyMeter.MyFooの一致する参照を見つけて、Manager.Foosからの参照を割り当てます。
これは私には見苦しくて、伸ばしすぎないようです。むしろMeterファクトリは、将来のMeterがManagerだけでなく他の場所からFooインスタンスを参照する可能性があるため、デシリアライゼーション中にManager.Foosを検索する必要はありません。
オブジェクトへの参照を容易に再構築できる、この逆シリアル化の問題に対する単純で柔軟な代替ソリューションはありますか?
なぜ 'MyMeter.MyFoo'プロパティで参照される' Foo'インスタンスを 'MyMeter'インスタンスとともに直列化/逆シリアル化できないのですか? –
です。しかし、Fooの同じインスタンスが複数のメーターで使用される可能性があり、デシリアライズ後に同じものであることを知る必要があります。 – Andy
私はXElementなどで自分のシリアル化/逆シリアル化メソッドを使用していることを指摘しておきます。 – Andy