我正在尝试编写代码,我总是返回对象本身,以便我可以继续链接.像这样
object.SetThis().SetThat().SetThisThirdThing().setThisFourthThing();
Run Code Online (Sandbox Code Playgroud)
我在所有方法中都返回这个,所以我可以继续这样做.但是我的一个方法是我在基类中创建的,当然然后返回基类.
所以不是public MyClass SetThat()它返回public SuperClass SetThat().并且因为它返回SuperClass而不是MyClass我不能调用SetThisThirdThing()因为基类不知道它.
那么我如何施展它以便我能保持链条?语法是什么?我试过了
object.SetThis().(MyClass)SetThat().SetThisThirdThing().setThisFourthThing();
Run Code Online (Sandbox Code Playgroud)
或者有没有办法让superClass方法在从子类调用时返回子类,而不必在所有子类中重写它?
这是所有子类共有的东西之一,所以如果我能够以某种方式绕过它而不必在所有子类中覆盖它,那将是非常好的.
有没有办法让superClass方法在从子类调用时返回子类,而不必在所有子类中重写它?
你能让超类通用吗?
public class SuperClass<T> where T: SuperClass<T>
{
public T SetThis()
{
....
return (T)this;
}
}
public class SubClass : SuperClass<SubClass>
{
}
Run Code Online (Sandbox Code Playgroud)
请注意,它不是100%保证,因为您也可以这样做:
public class EvilSubClass : SuperClass<SubClass>
{
}
Run Code Online (Sandbox Code Playgroud)
这符合通用约束,但现在返回类型SetThis()是SubClass和不EvilSubClass