首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >轻量级消息库?

轻量级消息库?
EN

Stack Overflow用户
提问于 2011-08-24 20:57:57
回答 2查看 1.1K关注 0票数 2

我使用Caliburn.MicroEventAggregator已经有几个星期了,真的很享受。我现在遇到的问题是,我的服务处理3种类型的消息。如果每种消息类型都需要不同的依赖项,我就不得不在构造函数中注入至少3个依赖项来处理消息。只有当我需要更改UI的状态时,我才会希望我的服务处理消息。

理想情况下,我希望每个处理程序都是自己的类。但是,看起来Caliburn.Micro提供的EventAggregator并不能创建处理程序类的实例。这样,如果每个消息处理程序需要不同的依赖关系,那么它就不会干扰我的核心服务。

有没有替代的轻量级接口,可以使用Caliburn.Micro提供的IHandle<T>接口,或者像ConsumerOf<T>这样的接口?由于所有消息传递都将在应用程序中完成,因此我不需要完全成熟的服务总线。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-24 21:08:23

我会推荐你看看MVVM Light's Messenger class

例如,而不是

代码语言:javascript
复制
class MyMessageHandler : IHandle<Message>
{
  void Handle( Message msg )
  {
    //Do something
  }
}

您将执行以下操作

代码语言:javascript
复制
class MyMessageHandler
{

  ctor MyMessageHandler()
  {
    Messager.Default.Register<Message>( this, Handle );
  }

  void Handle( Message msg )
  {
    //Do something
  }
}

任何想要发送消息的类都会简单地调用如下代码

代码语言:javascript
复制
Messanger.Default.Send( new Message( ... ) );
票数 1
EN

Stack Overflow用户

发布于 2011-09-02 11:33:30

哪一个类实现IHandle由您决定。您可以选择在单独的类(例如MessageType1Handler、MessageType2Handler等)中执行此操作。并将其作为单例添加到DI容器中?如果您能提供更多的代码(服务类的示例,以及消息发布到/订阅的位置),那就太好了

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7175801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档