我正在编写一个包含不同程序集中的插件系统的应用程序。
问题是插件系统需要从主应用程序获取应用程序设置(比如查找插件的目录)。
这是怎么做的,或者我是以错误的方式解决这个问题?
编辑:我被鼓励添加有关插件系统如何工作的一些细节。我还没有完全解决这个问题,我刚刚开始实施它,但我基本上是this article。
答案 0 :(得分:3)
让主应用程序从应用程序设置中获取插件目录并将其推送到插件系统。
答案 1 :(得分:2)
也许您可以在创建插件时将配置作为参数插入?
//Get the configuration for the current appDomain
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//Create the plugin, and pass in the configuration
IPlugin myPlugin = new AlfaPlugin(config);
您可能需要对System.Configuration程序集的引用。
答案 2 :(得分:1)
您可以编写自定义配置部分,该部分允许您编写表示XML架构的对象。一旦建立,您可以简单地询问该部分的当前实例。
您可以通过从System.Configuration.ConfigurationSection
派生并编写表示属性和子元素的属性来完成此操作。有关详细信息,请参阅How to: Create Custom Configuration Sections Using ConfigurationSection。
运行库的AppDomain是当前配置范围。 System.Configuration
命名空间关联所有配置文件并呈现统一视图。
要检索部分的当前实例,您可以使用ConfigurationManager.GetSection(...)
。
您的插件应该接受此部分的实例,而不是一般的Configuration
对象。