我正在根据找到的items / objets构建一个列表。找到这些对象后,我希望他们使用prism / IEventAggregator订阅一个事件。它们都属于同一类型的对象,但我不希望它们订阅同一个事件。即使它们属于同一类型,我希望它们具有唯一的订阅。因此,当我发布一个事件时,我可以将它指向每个唯一/特定的对象。有人有想法吗?这有可行吗?
答案 0 :(得分:0)
为您创建的每个对象设置唯一的事件类型将非常麻烦,并且可能非常难以扩展。但是,您可以在事件对象上拥有一个属性,该属性将是您要将事件定向到的特定实例。
订阅者(您的对象)都将收到事件通知,但会检查收件人属性'看看事件是否适合他们。如果不是,他们会忽略它,否则就行动起来。
伪代码:
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
}
}