2014-01-29 45 views
1

我写模块化的棱镜的应用,巫从目录(dll文件)加载模块文件。作为开发者,我不知道有多少该模块将在该目录中,什么样的是等传递元数据与棱镜模块

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

我知道我可以通过在每个模块中创建类似Module.config文件的内容,然后在主应用程序中通过ModuleInfo.Ref路径 - >然后获取Module.config文件路径) - 但我不想这样做。

我不知道Prism是否有通过代码传递元数据的可能性(Interface for metadata mode?XML string?Dynamic object?) 如果不是 - 我该如何实现它以及应该覆盖哪些类?

谢谢你的任何建议!

+2

不确定PRISM是否支持类似的东西?但是,在'Bootstrap'期间,你可以不用像'MetadataStore'('IMetadataStore')那样创建并注册'Container',并将'IMetadataStore'注入每个模块,然后每个模块在'Initialize )'? – sthotakura

回答

1

如果你想从模块到主应用程序暴露后的元数据模块已经被加载和初始化,然后一个简单的方法来做到这一点是添加的模块的元数据在初始化方法。例如,您可以有一个共享服务负责存储模块的元数据,每个模块可以访问它并在初始化时添加它们的元数据。

如果您想在加载之前访问模块的元数据(例如,要决定要加载或不加载哪些模块),那么Prism不会提供任何可以帮助您完成此功能的功能的盒子。您可以替换与棱镜的交互API的几个类的默认实现添加自定义功能(你可以阅读更多关于这个here,),但这种情况下,我认为这将是更好地实施单独的服务来获得元数据那么这些模块就可以将模块的初始化委托给Prism。

+0

实际上,我已经更改了实现od模块目录并向模块添加了属性,因此模块目录正在读取我的额外属性并创建了元数据结构。谢谢你的帮助! – Zozo