这是我的代码。我是泛型的新手,所以只是想知道是否有更好的方法来做我所做的事情。
public interface IMessageHandler<T> where T : IMessage
{
void Handle(T message);
}
public class MessageANotificationHandler : IMessageHandler<MessageA>
{
public void Handle(MessageA message)
{
// do something;
}
}
现在我希望我的应用程序接收所有实现 IMessage 的消息,但会自动找出用于特定消息的处理程序。我已经完成了以下操作,但感觉必须有更好的方法
public class MessageHandlerFactory
{
public Type GetMessageHandlerType(IMessage message)
{
if (message.GetType() == typeof(MessageA))
return typeof(MessageANotificationHandler);
return null;
}
}
然后在我的应用程序中,我使用反射来创建工厂返回的类型的实例并调用 Handle 方法。
如果您知道任何使此代码更好的方法,请提供帮助。
谢谢