Вызов метода подкласса после вызова метода суперкласса

В конечном счете, я хотел бы вызвать метод подкласса ПОСЛЕ вызова метода суперкласса. У меня есть код примерно так:

public class SuperClass
{
    protected WrapperClass<T> GetWrapperClass<T>()
    {
        return new WrapperClass(someStuff).Wrap<T>();
    }

    public SuperClass CommonMethod1()
    {
        // Do something
        return this;
    }

    public SuperClass CommonMethod2()
    {
        // Do something else
        return this;
    }

    // Many CommonMethods
}

public class SubClass : SuperClass
{
    public WrapperClass<SomeClass> OptionalLastMethod1()
    {
        return base.GetWrapperClass<SomeClass>();
    }

    public WrapperClass<SomeOtherClass> OptionalLastMethod2()
    {
        return base.GetWrapperClass<SomeOtherClass>();
    }
}

Я хотел бы сделать что-то вроде этого:

new SubClass()
    .CommonMethod1()
    .CommonMethod2()      // Returns SuperClass
    .OptionalLastMethod1();  // I would like to do something like this.

Я хотел бы избежать приведения Суперкласса к Подклассу как это:

var subClass = ((SubClass)new SubClass().CommonMethod1().CommonMethod2()).LastMethodToCall();

Важным моментом здесь является простота использования, а не простота реализации. Любой вклад приветствуется.

1 ответ

Решение

Решил это, сделав это. - удален какой-то неуместный код.

public class SuperClass<S> where S : SuperClass<S>
{
    public S CommonMethod1()
    {
        // Do something
        return (S) this;
    }

    public S CommonMethod2()
    {
        // Do something else
        return (S) this;
    }

    // Many CommonMethods
}

public class SubClass : SuperClass<SubClass>
{
    public WrapperClass<SomeClass> OptionalLastMethod1()
    {
        return base.GetWrapperClass<SomeClass>();
    }

    public WrapperClass<SomeOtherClass> OptionalLastMethod2()
    {
        return base.GetWrapperClass<SomeOtherClass>();
    }
}
Другие вопросы по тегам