私はそのようなオブジェクトを持つ既存のアプリケーションを持っています。
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 はありますか? 
そうでない場合、どのようなデータ構造を構築しようとしていますか?