【问题标题】:Passing metadata with Prism modules使用 Prism 模块传递元数据
【发布时间】:2014-01-29 14:08:38
【问题描述】:

我正在编写模块化 Prism 应用程序,女巫正在从目录(dll 文件)加载模块文件。作为开发人员,我不知道该目录中有多少模块,是什么类型的等等。

在我的应用程序中,我需要从导入的模块中获取一些元数据 - 即状态(如果它是窗口/面板/窗口元素/实用程序模块)、图标、本地化标题等。

我知道我可以通过在每个模块中创建类似 Module.config 文件的东西来实现这一点,然后通过 ModuleInfo.Ref 路径在主应用程序中访问它(上一层 -> 然后获取 Module.config 文件路径) - 但我没有不想那样做。

我想知道 Prism 是否有可能通过代码传递元数据(元数据模式的接口?XML 字符串?动态对象?) 如果没有 - 我该如何实现它以及我应该覆盖哪些类?

感谢您的建议!

【问题讨论】:

  • 不确定 PRISM 是否支持类似的东西?但是,您能不能在Bootstrap 期间创建并注册Container 之类的MetadataStore (IMetadataStore) 并将IMetadataStore 注入每个模块,然后每个模块在Initialize() 期间注册其元数据?

标签: wpf prism modularity prism-4


【解决方案1】:

如果您想在模块加载和初始化之后将元数据从模块公开到主应用程序,那么一个简单的方法是在其 Initialize 方法中添加模块的元数据。例如,您可以有一个共享服务负责存储模块的元数据,每个模块都可以访问它并在初始化时添加它们的元数据。

如果您想在加载模块之前访问它的元数据(例如,决定要加载或不加载哪些模块),那么 Prism 不提供任何可以帮助您执行此操作的功能,因为盒子。您可以替换与 Prism 的交互 API 相关的几个类的默认实现以添加您的自定义功能(您可以阅读有关此here 的更多信息),但对于这种情况,我认为最好实现一个单独的服务来获取模块的元数据,然后将模块的初始化委托给 Prism。

【讨论】:

  • 实际上,我已经更改了实现 od 模块目录并向模块添加了属性,因此模块目录正在读取我的额外属性并为元数据创建了一个结构。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 2019-04-30
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
相关资源
最近更新 更多