是否可以从其父类的构造函数返回子类

时间:2016-03-30 19:33:31

标签: c# class inheritance constructor

我知道这不会这样,因为类的构造函数是空的:

class ParentClass
{
    public ParentClass(int case)
    {
       if(case==1) 
           return new ChildClass1();
       else 
           return new ChildClass2();
    }
}

有没有办法做到这一点。

1 个答案:

答案 0 :(得分:7)

不,没有办法,但...... 它听起来像一个工厂模式实现为静态方法:

class ParentClass
{ 
    // "disable" ctor for public use but 
    // allow for children
    protected ParentClass() { }

    public static ParentClass CreateInstance(int @case)
    {
       if(@case==1) 
           return new ChildClass1();
       else 
           return new ChildClass2();
    }
}

用法:

var parentClass=  ParentClass.CreateInstance(1);