调用超类方法后调用子类方法
Calling subclass method after calling superclass method
最终,我想在调用超类方法之后调用子类方法。我有这样的代码:
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();
这里的重点是易于使用,而不是易于实施。欢迎任何意见。
通过这样做解决了它。
- 删除了一些不相关的代码。
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>();
}
}
最终,我想在调用超类方法之后调用子类方法。我有这样的代码:
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();
这里的重点是易于使用,而不是易于实施。欢迎任何意见。
通过这样做解决了它。 - 删除了一些不相关的代码。
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>();
}
}