我的场景: 考虑两个类class SubGroup和class Group。 我希望没有其他类创建SubGroup对象,除非有一个Group,因为没有Group就不会有SubGroups存在。 但是, Group可以存在而没有任何SubGroup。 此外,Group可以包含多个SubGroup。
class SubGroup{
private SubGroup(int arg){
}
}
class Group{
List<SubGroup> list;
Group(int param){
list = new List<SubGroup>();
}
SubGroup createChild(int args){
return new SubGroup(int args); // I need to access SubGroups constructor?? (without using inheritance).
}
}
class C{
Group b = new Group(param);
SubGroup a = b.createChild(args); // since constructor is not visible here. bcz, SubGroup will not exist without Group.
}
我尝试过的方法:
我可以让Group从SubGroup继承,并将SubGroup构造函数设置为保护,但这意味着is-a
关系,即每个Group都是一个SubGroup。但实际上并不是这样。此外,我想在创建子组时使用一个参数,但是在创建Group时没有子组的参数,因此我无法使用继承。 内部类: 内部类不能帮助解决问题,因为我有很多层
SuperGroup,SubGroup,MicroGroup
。 实际上这是一个金融项目,我有Account、AccountHead、SubGroup、Group
等,所以会创建太多的内部层级,这会降低可读性。如何在C#中实现?