[英]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.