我们在搭建好Prism框架中的项目后,我们可用实现订阅-发布-接收,这个流程的实现,允许模块在不直接相互引用的情况下通信,实现模块间的松耦合。
1 我们先定义一个消息内容类型 我们发布和传递都将是 BouncingmessageEvent 类型 数据类型是string 继承 PubsubEvent
2 写一个发布事件 的代码
3 写一个接收代码 (接收需要包含同一个对象的指针,含义:同样一个栈中的地址)
示例解释:
接收数据o为匿名委托的参数 o就是传递过来的值 。其中在BouncingmessagesEvent中定义的为string类型所以传递时参数必须为string类型
注意 事项:
IEventAggregator类型 的方法.GetEvent 泛型类型是 注册的什么类型决定接收的时候必须同类型 如是A类型 那么接收时 GetEvent<A>.Subscribe((p)=>{}) p这里是传递过来的参数其中A类型必须继承了PubSubEvent<string> 其中的string 是传递的参数类型
扩展:
可以查找两个变量的栈中的地址对比,已知道是否引用了同一个对象,或者说是包含同一个对象指针。
查找方式:
在即时窗口当中输入&加变量名称 注意程序必须时中断时。(值类型在堆中 引用类型在栈中)