当前位置: 首页 > 编程语言 > C#

在C#中实现消息-订阅机制Share

时间:2023-04-11 00:54:56 C#

在C#中实现消息/订阅机制回答完这个问题后,我设置了一个ModelProviderService,它将模型公开为属性。服务的消费者是视图模型,即他们从服务中提取模型而不是自己实例化它们。类ModelProviderService{privateLoginModelloginModel;publicLoginModelLoginModel{get{返回loginModel;}设置{登录模型=值;}}privateProjectsModelprojectsModel;publicProjectsModelProjectsModel{get{返回projectsModel;){loginModel=newLoginModel();projectsModel=newProjectsModel();现在,这里是将要发生的事情:我如何实现:“广播信息”?订阅电子邮件?您可以使用MessageBus或EventAggregator通过弱引用向订阅者发布消息。看看我的实现(或NuGet包)。它还可以通过在Handle方法上应用HandleOnUIThreadAttribute来为您将消息处理编组到UI线程(如果UI组件需要更新)。在您的情况下,用法类似于://ThemessagepublicclassLoginModelChanged{publicLoginModelChanged(LoginModelmodel){Model=model;}publicLoginModel模型{get;私有集;}}//发布消息的服务publicclassModelProviderService{privateIMessageBus_messageBus;私有登录模型_loginModel;publicModelProviderService(IMessageBusmessageBus){_messageBus=messageBus;}publicLoginModelLoginModel{get{return_loginModel;}设置{_loginModel=值;}}//订阅ViewModelpublicclassSomeViewModel:IHandle{publicSomeViewModel(IMessageBusmessageBus){messageBus.Subscribe(this);}publicvoidHandle(LoginModelChangedmessage){//Dosomethingwithmessage.Model}}如果您想了解更多有关内部工作原理以及如何实现的信息;查看GitHub存储库中的源代码。随意使用你喜欢的代码:)如果你想在WPF应用程序中分发消息,你可以使用prism框架的EventAggregator。EventAggregator允许视图模型弱地查看事件,不需要关于发送者的知识。这使您可以轻松地在组件或模块中分发消息。以上就是C#学习教程:分享C#中消息/订阅机制的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: