我有一个现有的应用程序,其中包含这样的对象。
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?
如果不是,我希望构建什么样的数据结构?