私はそのようなオブジェクトを持つ既存のアプリケーションを持っています。
class MyObject{
public MyCollection TypeOnes;
public MyCollection TypeTwos;
public MyCollection TypeThrees;
public MyCollection All;
}
class MyCollection : Collection{
public boolean IsLoaded;
}
そして、このようにロードされます。
//using bool array for flag simplicity in example
public void Load(ref MyObject obj, bool[] flags){
if(flags[0]){
obj.TypeOnes = LoadOnes();
obj.TypeOnes.IsLoaded = true;
}else{
obj.TypeOnes = new MyCollection();
}
if(flags[1]){
obj.TypeTwos = LoadTwos();
obj.TypeTwos.IsLoaded = true;
}else{
obj.TypeTwos= new MyCollection();
}
if(flags[2]){
obj.TypeThrees = LoadThrees();
obj.TypeThrees.IsLoaded = true;
} else {
obj.TypeThrees = new MyCollection();
}
if(flags[3]){
obj.All = obj.TypeOnes.Clone().AddRange(obj.TypeTwos.Clone()).AddRange(obj.TypeThrees.Clone());
obj.All.IsLoaded = true;
} else {
obj.All = new MyCollection();
}
}
明らかなように、すべてのタイプがコレクションAll
とともに一度にロードされない限り、すべてのタイプを表すはずのコレクションが同期しなくなりますAll
。
私がやろうとしているのは、すべての型コレクションをロードする単一のフラグを作成することですが、All
すべての型コレクションに一度にアクセスするために使用するコレクションを保持し、制限するためにそれらを同期させたいと考えています。私がしなければならないリファクタリングの量。TypeOnes
コレクションに変更を加えるとコレクションに反映され、All
その逆も同様になるように、読み取り/書き込み可能にしたい。
これに使用できる既存の DataType はありますか?
そうでない場合、どのようなデータ構造を構築しようとしていますか?