我正在努力避免重复的代码块 - 每个代码块处理父代的不同子代。以下是我想避免的一个例子:
if (FormNumber == 0)
{
Child1 obj = new Child1()
statements;
}
else
{
Child2 obj = new Child2()
statements;
}
我想将FormNumber传递给父类,并使用父函数来确定使用哪个子类。我想象一个父函数,如:
public Parent GetChild(int F)
{
if (FormNumber == 0)
return new Child1();
else
return new Child2();
}
然后在主函数
中Parent obj = new Parent();
Child? newobj = obj.GetChild(FormNumber);
statements;
问题是我需要弄清楚如何填写?合适的儿童班。
答案 0 :(得分:3)
答案 1 :(得分:1)
您需要为Child
设置一个inheratance层次结构。如果为Child1和Child2设置公共接口,则可以执行以下操作:
Parent obj = new Parent();
IChild newobj = obj.GetChild(FormNumber);
// newobj may be a Child1 or Vhild2 object.
hiearrchy可能看起来像:
public interface IChild {
public methods();
}
public class Child1 : IChild {}
public class Child2 : IChild {}
您的方法可能如下所示:
public IChild GetChild(int F)
{
if (FormNumber == 0)
return new Child1();
else
return new Child2();
}