繁体   English   中英

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

[英]Parent method that chooses child class (C#)

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

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;

问题是我需要弄清楚如何填写? 与正确的儿童班。

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

IChild newobj = obj.GetChild(FormNumber);  

您需要为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();
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM