【发布时间】:2013-05-23 13:27:54
【问题描述】:
我有一组从ObjBase 类继承的对象。所有这些对象的处理逻辑几乎相同,但略有不同。如何将所有逻辑保留在 public virtual void Work(ObjBase o) 中并在覆盖的方法中处理特定逻辑。
下面的示例是我想要实现的,但由于覆盖参数而无法编译。
有什么更好的方法来实现它?
class Foo
{
public void Do(ObjBase o)
{
switch (o.RequestType)
{
case "A":
new ProcA<ObjA>().Work(o);
break;
case "B":
new ProcB<ObjB>().Work(o);
break;
}
}
}
class ObjBase { }
class ObjA : ObjBase { }
class ObjB : ObjBase { }
class ProcBase
{
public virtual void Work(ObjBase o)
{
//Common things to do...
}
}
class ProcA<T> : ProcBase where T : ObjBase
{
public override void Work(ObjA o)
{
base.Work(o);
//DoSpecificWork
}
}
class ProcB<T> : ProcBase where T : ObjBase
{
public override void Work(ObjB o)
{
base.Work(o);
//DoSpecificWork
}
}
谢谢
【问题讨论】:
标签: c# inheritance virtual-functions overriding