我有一组从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
}
}
谢谢