选择子类的父方法(C#)

时间:2011-02-16 16:11:11

标签: c# inheritance

我正在努力避免重复的代码块 - 每个代码块处理父代的不同子代。以下是我想避免的一个例子:

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;

问题是我需要弄清楚如何填写?合适的儿童班。

2 个答案:

答案 0 :(得分:3)

您正在寻找factory / strategy模式。让他们实现类似的界面并拥有它:

IChild newobj = obj.GetChild(FormNumber);  

答案 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();
} 
相关问题