方法的 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
,这不是整个事件机制的目的吗?
我想,如果您想在每个订阅者的上下文中执行发布者定义的方法,您也可以将方法发布为有效负载,但我还没有想出一个用例: -)
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
,这不是整个事件机制的目的吗?
我想,如果您想在每个订阅者的上下文中执行发布者定义的方法,您也可以将方法发布为有效负载,但我还没有想出一个用例: -)