[英]Return child class in parent method C#
我有父类:
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();
这种可能性还有其他模式吗?
使ParentMethod成为通用的
public abstract class ParentClass
{
public T ParentMethod<T>() where T:ParentClass
{
return (T)this;
}
}
然后称之为
new ChildA().ParentMethod<ChildA>().ChildAMethod1().ChildAMethod2();
new ChildB().ParentMethod<ChildB>().ChildBMethod1();
如果子进程的方法不是从父进程继承的,那么父类和子类之间的连接是什么?
由于类已经解耦,您可以通过接口强调解耦:
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.