棱镜中的事件过滤器和多个模块实例

Events filters and multiple instance of modules in prism

我正在使用 Prism 编写 WPF 应用程序,我是 Prism 的新手

我面临以下问题:

我将创建与事件耦合的模块,在我的例子中,模块将从相机获取图像并将其发送到处理图像的模块。现在我通过传递一个字符串来模拟,就像在 Prism 的事件聚合器示例 14 中一样。

我这样创建两个模块

moduleCatalog.AddModule<ModuleProcess.ModuleProcessModule>("ModuleProcess-1");
moduleCatalog.AddModule<ModuleProcess.ModuleProcessModule>("ModuleProcess-2");

现在,如果我实例化 2 个摄像头模块和 2 个处理模块,我希望能够像这样进行过滤,以便处理 1 仅侦听来自摄像头 1 的事件(例如带有 ID)

所以在我的 ViewModel 的构造函数中

_ea.GetEvent<MessageSentImageEvent>().Subscribe(MessageImageReceived, x => x._iDest == iId);

我的留言板是这样的

public class MessageImagePayload
{
     public int _iDest;
     //...
}

我不明白的是如何在创建模块时在视图模型中设置 iId 值(是否可以从视图模型或解决方案是别的吗?

该模块对模块目录一无所知,因此(在 Prism 上下文中)多次加载一个模块没有意义。

如果你想要一个摄像头驱动程序的两个实例(具有两种不同的配置),你必须将配置加载到驱动程序(如果它直接注册到容器)或驱动程序管理器(如果你需要更多比容器所能提供的还要多)。

一旦相机驱动程序拥有其配置数据,它就可以使用它来将其输出定向到特定的处理单元。

旁注:我会检查像 TPL Dataflow 这样的工具是否比事件聚合器更适合链接组件。