在父方法C#中返回子类

时间:2018-03-03 19:38:52

标签: c# oop

我有父类:

public abstract class ParentClass
{
     public ParentClass ParentMethod() { ... }
}

我也有两个孩子:

public class ChildA : ParentClass
{
    public ChildA ChildAMethod1()
    {
        ... 
        return this; 
    }

    public ChildA ChildAMethod2()
    {
        ... 
        return this; 
    }
}

public class ChildB : ParentClass
{
     public ChildB ChildBMethod() { ... 
            return this; }
}

在这种情况下,我有可能这样写:

new ChildA().ChildAMethod1().ChildAMethod2();

但是如何实现这样写的可能性:

new ChildA().ParentMethod().ChildAMethod1().ChildAMethod2();

new ChildB().ParentMethod().ChildBMethod1();

这种可能性还有其他模式吗?

2 个答案:

答案 0 :(得分:3)

使ParentMethod成为通用

new ChildA().ParentMethod<ChildA>().ChildAMethod1().ChildAMethod2();
new ChildB().ParentMethod<ChildB>().ChildBMethod1();

然后将其称为

df = df.apply(lambda x: x.replace(',', '&'))
df = df.apply(lambda x: x.replace('.', ','))
df = df.apply(lambda x: x.replace('&', '.'))

答案 1 :(得分:0)

如果未从父级继承子级的方法,则父级和子级之间的连接是什么?

由于类已经解耦,您可以通过接口强调解耦:

public interface INext
{
    INext ChildAMethod1();
    INext ChildAMethod2();
}

public abstract class ParentClass
{
    public INext ParentMethod()
    {
        ...
        return new ChildA(...);
    }
}

public class ChildA : ParentClass, INext
{
    public INext ChildAMethod1()
    {
        ... 
        return this; 
    }

    public INext ChildAMethod2() 
    {
        ... 
        return this; 
    }
}