如何在C#中链接方法时强制转换

Haf*_*fax 3 c# syntax casting

我正在尝试编写代码,我总是返回对象本身,以便我可以继续链接.像这样

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方法在从子类调用时返回子类,而不必在所有子类中重写它?

这是所有子类共有的东西之一,所以如果我能够以某种方式绕过它而不必在所有子类中覆盖它,那将是非常好的.

D S*_*ley 5

有没有办法让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