轻量级消息传递库
本文关键字:消息传递库 轻量级 | 更新日期: 2023-09-27 18:06:36
我已经使用Caliburn.Micro
的EventAggregator
几个星期了,真的很喜欢它。我现在遇到的问题是,假设我的服务处理3种类型的消息。如果每种消息类型都需要不同的依赖项,那么我就不得不在构造函数中注入至少3个依赖项来处理消息。我想让我的服务处理消息的唯一情况是当我需要更改UI的状态时。
理想情况下,我希望每个处理程序是它自己的类。然而,Caliburn.Micro
提供的EventAggregator
看起来并没有创建处理程序类的实例。这样,如果每个消息处理程序需要不同的依赖,那么它就不会打扰我的核心服务。
是否有一个替代轻量级使用相同的接口,Caliburn.Micro
提供IHandle<T>
,或类似ConsumerOf<T>
?由于所有消息传递都将在应用程序内完成,因此我不需要一个完整的服务总线。
我建议你看看MVVM Light的Messenger类。
例如,而不是
class MyMessageHandler : IHandle<Message>
{
void Handle( Message msg )
{
//Do something
}
}
您将执行以下操作
class MyMessageHandler
{
ctor MyMessageHandler()
{
Messager.Default.Register<Message>( this, Handle );
}
void Handle( Message msg )
{
//Do something
}
}
任何想要发送消息的类只需调用下面的代码
Messanger.Default.Send( new Message( ... ) );
由您决定由哪个类实现IHandle。你可以选择在单独的类中这样做(例如MessageType1Handler, MessageType2Handler等),并将其作为一个单例添加到你的DI容器?如果您能提供更多的代码(服务类的示例,以及消息被发布到/订阅的位置),那就太好了