我正在为一个内部屏幕管理系统编写一个插件用户控件。我的BO层是基于CSLA构建的,我使用CSLA'a ObjectFactory来调用我的数据层。更复杂的是,我使用CslaObjectFactoryLoader应用程序设置来拥有两组工厂加载程序:一个用于测试数据层,另一个用于实时数据层。这对于将TDD作为我的测试项目很好应用程序配置指定自己的“假”工厂加载程序,而我的屏幕应用程序配置指定实际数据工厂加载程序。从那里,每个加载程序将为DataPortal提供适当的真实/虚假对象工厂。
这里的关键是CSLA是硬编码的
ConfigurationManager.AppSettings["CslaObjectFactoryLoader"]
供定制工厂使用。因为这是一个用户控件,所以我需要用适当的CslaObjectFactoryLoader值修改运行时配置文件。在用户中调试用户控件时ControlTestContainer.exe我曾经
a borrowed bit of code
将CslaObjectFactoryLoader应用程序设置导入UserControlTestContainer的配置文件。此方法确实导致保存对用户的修改ControlTestContainer.exe.config文件但我不屑一顾,继续工作。
现在我已经准备好部署到生产屏幕管理器中了,我不想使用相同的“永久复制”方法,因为其他插件屏幕的设置冲突。有没有办法将配置设置临时导入到运行时配置文件中?我是否可以“重定向”默认实现的位置配置管理器.AppSettings走了?
我的计划B是跳过自定义工厂加载程序,并允许默认的ObjectFactoryLoader调用数据层的对象工厂。然后我会修改我的工厂以查看appSetting,从而使用测试项目的对象工厂。不过,我真的不喜欢这个主意。
谢谢大家的帮助。