方法的PubSubEvent?

时间:2016-09-13 08:51:53

标签: c# prism eventaggregator

In a previous question我构建了一个eventpublic class SetObjectEvent : PubSubEvent<MyObject> { },它的工作非常好。但是,我现在想对方法做同样的事情,所以除了PubSubEvent<>(?)

之外,我还要扩展其他内容。

在浏览le bigue o&#le; interwebz时,大多数问题如&#34;如何从另一个ViewModel调用方法通过此ViewModel&#34;,人们引用依赖关系或命令,这是很好的解决方案I&过去使用过的#39;但是在这个特定的情况下,这些都不起作用,因为我处理了一个案例,其中孩子的父母的兄弟姐妹需要被称为通过表示兄弟姐妹。因为父母不会(也不能)知道孩子的存在,除了孩子不时要求某些属性,我认为使用EventAggregator将是最好的解决方案,除非有人当然有更好的想法。

所以,具体来说,我的问题是; 我应该在PubSubEvent<>中替换SetObjectEvent以获取相似版本CallMethodEvent : ?x?x?x? { }

2 个答案:

答案 0 :(得分:2)

不确定我是否完全理解您的问题,因为解决方案有点微不足道:

EventAggregator.GetEvent<MyEvent>().Subscribe( MyMethod );

public class MyEvent : PubSubEvent
{
}

每次发布​​MyMethod时都会执行MyEvent,这不是整个事件机制的用途吗?

我想,你也可以发布一个方法作为有效负载,如果你想在每个用户的上下文中执行发布者定义的方法,但是我还没有提出一个用例:-)

答案 1 :(得分:0)

我已经创建了一个(临时)解决方法来解决此问题;

通过使用字符串CallMethodEvent : PubSubEvent<string> { }创建完全相同的设置,我可以通过发布this.EventAggregator.GetEvent<CallMethodEvent>().Publish("SomeUselessString");并在订阅后this.EventAggregator.GetEvent<CallMethodEvent>().Subscribe((someString) => { this.MethodToBeCalled(); });调用所需的方法,以获得所需的方法叫做。这里的主要缺点是总是有一个字符串被抛出,除了让它起作用之外别无其他理由。如果没有其他答案弹出,我将不得不坚持下去,但我更喜欢更清洁的方式来解决问题..