【发布时间】:2012-04-08 12:47:18
【问题描述】:
假设我有一个名为 IMessage 的基类,以及许多派生消息类。
在我的程序中,我有一种方法可以接收所有消息:
void ReceiveMessage(IMessage message)
{
}
我想为每种类型的消息调用一个特定的方法。 如果我能做到,那就太好了:
void ReceiveMessage(IMessage message)
{
HandleMessage(message);
}
void HandleMessage(DummyMessage message)
{
Blah;
}
void HandleMessage(SillyMessage message)
{
Yuk;
}
..但显然“我们不会那样出去的”。
那么我将如何为特定消息实现特定的处理程序,从单个消息处理程序调用?
【问题讨论】:
-
IMessage 接口是否应该定义所有 IMessage 实现都实现的“通用”方法,从而允许您在 ReceiveMessage 方法中调用这些方法?
-
@TrevorPilley 这取决于。有时这是不合适的。例如,许多游戏引擎或 3D 场景图都会遇到场景中不同“演员”对每种场景类型(消息)的处理方式非常不同的情况。
-
我希望处理程序在另一个类中被调用,而不是在消息本身中......(例如,一个服务器类应该包含不同消息的所有处理程序)
标签: c# class methods handler derived