C# 返回父方法C中的子类#
我有家长课:C# 返回父方法C中的子类#,c#,oop,C#,Oop,我有家长课: public abstract class ParentClass { public ParentClass ParentMethod() { ... } } 我还有两个孩子: public class ChildA : ParentClass { public ChildA ChildAMethod1() { ... return this; } public ChildA ChildAMethod
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();
但如何实现这样写的可能性:
new ChildA().ChildAMethod1().ChildAMethod2();
new ChildA().ParentMethod().ChildAMethod1().ChildAMethod2();
new ChildB().ParentMethod().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;
}
}
使ParentMethod泛型
public abstract class ParentClass
{
public T ParentMethod<T>() where T:ParentClass
{
return (T)this;
}
}
公共抽象类父类
{
公共T ParentMethod(),其中T:ParentClass
{
返回(T)这个;
}
}
那就这样说吧
new ChildA().ParentMethod<ChildA>().ChildAMethod1().ChildAMethod2();
new ChildB().ParentMethod<ChildB>().ChildBMethod1();
new ChildA().ParentMethod().ChildAMethod1().ChildAMethod2();
新建ChildB().ParentMethod().ChildBMethod1();
是的,这就是我要找的。我稍微修改了一下。刚刚公开了抽象类ParentClass,然后公开了类ChildA:ParentClass公共类ChildB:ParentClass,并在子方法中返回T。非常感谢。ParentMethod是否也返回此对象,或者它可以是ParentClass类型的任何对象?