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