【发布时间】:2014-04-23 02:26:24
【问题描述】:
我有这个代码,
public abstract class BaseClass
{
public object CommonMethod<T>()
{
//Common code
CustomMethod(); //Call child method
return (T)CustomObject;
}
internal abstract void CustomMethod();
}
public class ChildClass : BaseClass
{
public MyDTO CommonMethod()
{
return (MyDTO)base.CommonMethod<MyDTO>(); //Call Base class common code
}
internal override void CustomMethod()
{
//Custom Code, specific to child class
}
}
我有一些公共代码放在基类 (BaseClass.CommonMethod) 中, 但最后同样的方法应该运行子类特定的代码(ChildClass.CustomMethod)。
这个实现是正确的还是有任何其他首选/更好的实现来实现这个?
编辑
最终代码(根据答案更新):
public abstract class BaseClass<T> where T : IDTO
{
public T CommonMethod()
{
//Common code
CustomMethod(); //Call child method
return (T)CustomObject;
}
internal abstract void CustomMethod();
}
public class ChildClass : BaseClass<MyDTO>
{
internal override void CustomMethod()
{
//Custom Code, specific to child class
}
}
【问题讨论】:
-
如果很常见,为什么还要给孩子戴上?
-
@AD.Net 实际上,只有代码的公共部分被移到 BaseClass 中,但其余部分仍在 shild 类中。..