如果我有一个名为“A”的类,并且我有两个派生自它的类,可以说“B”和“C”我如何创建 B 和 C 的新实例而不知道哪个是哪个。这可能听起来令人困惑,所以让我澄清一下并使用与我类似的代码。
基类:
class A {
stuff...
}
派生类:
class B : A{
stuff...
}
class C : A {
stuff...
}
然后在其他一些课程中,我有:
class Z {
void Derp() {
foreach(A classA in listOfA's) {
create new instance of derived class
}
}
}
我不能只是说B = new B()
,C = new C()
因为也许 B 根本不在列表中,或者列表中可能有 3 个 B 和 1 个 A。Surly 有一些方法可以做到这一点,但如果没有,我可以有一个 switch-case 语句,如:
class Z {
void Derp() {
foreach(A classA in listOfA's) {
switch(classA) {
case is B:
B = new B();
break;
case is C:
C = new C();
break;
}
}
}
}
}
除非必要,否则我想避免这样做,因为每次我创建一个派生自类 A 的新类时,我都必须记住在其中添加另一个 case 语句。
那么我该怎么做呢?
谢谢。