棱镜使用已发现的服务

Prism use of discovered service

假设一个 Prism 版本 8 WPF 模块有一个需要调用服务的 ViewModel。 该服务实现了 IService,但存在许多该服务的实现。每个实现都是一个文件(class 库),可能是一个 IModule(见下文)。

用户应该能够通过配置或文件夹的内容来配置要使用的文件。

显然(?)因此,我正在考虑通过创建正确类型的 ModuleCatalog 来发现模块,同时“引导”应用程序和服务因此可以包含在该模块中。 如果调用是无效调用(“即发即弃”),我想我可以简单地使用 EventAggregator(作为观察者实现服务),但是调用 returns 一个值。

解决此问题的最佳方法是什么? (我想避免编写我自己的某种可交换服务实现 dll 文件的程序集“discovering/loading”)

如果你能注入IEventAggregator,你就能注入IService,不是吗?

如果没有模块注册实现,您将得到一个异常。如果有多个模块,则最后一个获胜(至少以 unity 作为容器)。