【发布时间】:2010-03-19 15:29:48
【问题描述】:
我在我的 WPF 应用程序中使用 Prism,到目前为止,我一直通过 var moduleCatalog = new ConfigurationModuleCatalog(); 加载模块。我想从数据库中获取模块目录。 Prism 文档表明这是可能的,但没有详细说明。
有没有人做过这个并且可以提供一些指导?
【问题讨论】:
我在我的 WPF 应用程序中使用 Prism,到目前为止,我一直通过 var moduleCatalog = new ConfigurationModuleCatalog(); 加载模块。我想从数据库中获取模块目录。 Prism 文档表明这是可能的,但没有详细说明。
有没有人做过这个并且可以提供一些指导?
【问题讨论】:
这是理论上的可能性,但在我见过的任何样本中都没有。
基本上,您要做的是将 DLL / 文件进行 base64 编码到数据库中,或者将它们压缩并将它们存储在一个 blob 中。您可以在引导程序中下载它们并将它们复制到本地(在临时目录中),然后允许它们使用 DirectoryModuleCatalog 从文件系统正常加载。如果你想让它更优雅一点,你可以编写自己的 ModuleCatalog 来封装这个逻辑。
这与我所做的非常相似...实际上,我在启动时从网站下载了所有模块的 zip 文件,然后解压缩并使用 DirectoryModuleCatalog 加载它们。
【讨论】:
您可以通过实现IModuleCatalog 来编写自己的ModuleCatalog 实现。然后,您的实现可以通过您定义的任何方式填充目录。
您还可以使用接受Stream 的CreateFromXAML overload 并实现一个通过HTTP 以XAML 格式提供ModuleCatalog 的Web 服务。
【讨论】: