我正在编写一个包含不同程序集中的插件系统的应用程序。在程序集间使用应用程序设置
问题是插件系统需要从主应用程序中获取应用程序设置(如寻找插件的目录)。
这是怎么完成的,还是我以这种错误的方式去做?
编辑:我被鼓励添加一些关于插件系统如何工作的细节。我还没有完全解决这个问题,我只是开始实施它,但我基本上是通过this article。
我正在编写一个包含不同程序集中的插件系统的应用程序。在程序集间使用应用程序设置
问题是插件系统需要从主应用程序中获取应用程序设置(如寻找插件的目录)。
这是怎么完成的,还是我以这种错误的方式去做?
编辑:我被鼓励添加一些关于插件系统如何工作的细节。我还没有完全解决这个问题,我只是开始实施它,但我基本上是通过this article。
让主应用程序从应用程序设置中获取插件目录并将其插入插件系统。
也许你可以在创建插件时插入配置作为参数?
//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程序集的引用。
这正是我所说的...... – EricSchaefer 2008-11-15 23:07:04
您可以编写自定义配置部分,该部分允许您编写表示XML模式的对象。一旦建立,您可以简单地询问该部分的当前实例。
您可以通过从System.Configuration.ConfigurationSection
派生并写入代表属性和子元素的属性来完成此操作。有关更多信息,请参阅How to: Create Custom Configuration Sections Using ConfigurationSection。
运行库的AppDomain是当前的配置范围。 System.Configuration
命名空间将所有配置文件关联起来,并呈现一个统一的视图。
要检索节的当前实例,可以使用ConfigurationManager.GetSection(...)
。
您的插件应该接受本节的一个实例,而不是一般的Configuration
对象。
您可能想要添加一些关于插件系统如何工作的细节。有很多不同的方式来处理主应用程序和插件之间的双向通信。 – MusiGenesis 2008-11-15 22:48:12