方法的 PubSubEvent?

A PubSubEvent for methods?

我构建了一个 event class、public class SetObjectEvent : PubSubEvent<MyObject> { },它工作得很好。但是,我现在想对方法做同样的事情,所以我必须扩展 PubSubEvent<>(?)

以外的东西

在浏览 le bigue o'le interwebz 时,大多数问题如 "How do I call a method from another ViewModel through this ViewModel",人们指的是依赖项或命令,这是我过去使用过的很好的解决方案。但是在这种特定情况下,这些都不起作用,因为我正在处理 Parent 的 Child 的兄弟姐妹需要被 称为 的情况姐弟说。因为 Parent 不知道(也不能)知道它 child 的存在,而不是 child 不时调用一些属性,我认为使用 EventAggregator 将是最好的解决方案,当然除非有人有更好的主意。

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

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

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

不确定我是否完全理解你的问题,因为解决方案有点琐碎:

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

public class MyEvent : PubSubEvent
{
}

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

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