我正在尝试执行以下操作:
public abstract BaseClass {
public virtual void ReceiveEvent(Event evt)
{
ProcessEvent(evt as dynamic);
}
private void ProcessEvent(object evt)
{
LogManager.Log(@"Received an event that is not being processed!
Dispatch fallback");
}
}
public DerivedClass: BaseClass {
private void ProcessEvent(SpecificEvent evt)
{
LogManager.Log("Processing Event");
}
}
SpecificEvents 命中后备方法,而不是派生类中的方法。我一直在同一个类中使用动态调度,发现它非常有用/干净。如上例所示,它不能与派生类一起使用吗?
编辑: 答案似乎有些混乱。基本上我一直使用以下设计:
public class SomeClass{
public void DoSomethingDispatcher(SomeObject obj)
{
ProcessObject(obj as dynamic);
}
private void DoSomething(SomeObjectType1 obj)
{
}
private void DoSomething(SomeObjectType2 obj)
{
}
private void DoSomething(SomeObjectType3 obj)
{
}
private void DoSomething(object obj) //fallback
{
}
}
当您事先不知道确切的类型并且不想使用大的 switch 语句时,效果很好。只是想知道这是否可以通过继承来实现,其中基类包含回退方法,派生类包含所有更具体的方法。