动态对象从属于唯一棱镜事件



我正在根据找到的项目/物品构建一个列表。当找到这些对象时,我希望它们使用 prism/IEventAggregator 订阅事件。它们都属于同一类型的对象,但我不希望它们订阅同一事件。即使它们属于同一类型,我也希望它们具有唯一的订阅。因此,当我发布事件时,我可以将其定向到每个唯一/特定的对象。有人有什么想法吗?这到底可行吗?

为您创建的每个对象提供唯一的事件类型将非常麻烦,并且可能缩放性很差。但是,您可以在事件对象上拥有一个属性,该属性将是要将事件定向到的特定实例。

订阅者(您的对象)都将收到事件通知,但会检查"收件人属性"以查看事件是否适合他们。如果不是,他们会忽略它,否则就会采取行动。

伪代码:

public class MyEvent {
   public MyClass Recipient { get; set; }
}
public class MyClass {
   public MyClass(IEventAggregator evt) {
      evt.Register<MyEvent>(TakeAction);
   }
   private void TakeAction(MyEvent event) {
      if (!event.Recipient == this) {
         return;
      }
      // Perform the action
   }
}

使用单个事件并传递包含事件相关信息的有效负载。 然后,订阅者可以根据随事件一起发送的有效负载筛选事件。

https://github.com/PrismLibrary/Prism/blob/master/Documentation/WPF/70-CommunicatingBetweenLooselyCoupledComponents.md#subscription-filtering

最新更新