У меня есть основной состав типов:Могу ли я построить сгруппированные классы, не используя 'new' так много?
class A{
public A(B1 b1, B2 b2){
this.b1 = b1;
this.b2 = b2;
}
public B1 b1 {get; private set;}
public B2 b2 {get; private set;}
}
class B1{
public B1(C1 c1, C2 c2, C3 c3){
this.c1 = c1;
this.c2 = c2;
this.c3 = c3;
}
public C1 c1 {get; private set;}
public C2 c2 {get; private set;}
public C3 c3 {get; private set;}
}
class B2{
public B2(C1 c1, C2 c2, C3 c3){
this.c1 = c1;
this.c2 = c2;
this.c3 = c3;
}
public C1 c1 {get; private set;}
public C2 c2 {get; private set;}
public C3 c3 {get; private set;}
}
class C1{}
class C2{}
class C3{}
Есть ли уборщик способ построить A
?
public static void Main()
{
A a = new A(new B1(new C1(), new C2(), new C3()), new B2(new C1(), new C2(), new C3()));
}
Могу ли я достичь той же конструкции без использования new
?
Есть ли что-то, что я могу сделать для своих конструкторов, чтобы сделать это возможным?
Что представляют собой '' c1', 'c2',' c3'? –
Так как это все конструкторы по умолчанию, дайте всем параметрам конструктора значения по умолчанию 'null' и do' this.c1 = c1 ?? новый C1(); '. Но у меня есть ощущение, что вы используете конструкторы по умолчанию для представления параметризованных конструкторов, потому что. –
Вы можете интернализировать 'new' в конструкторе и устанавливать только те параметры, которые вам действительно нужны. Или вы можете использовать IoC (если это имеет смысл) для более элегантного решения. –