Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在运行时临时导入配置设置?_.net_App Config - Fatal编程技术网

.net 在运行时临时导入配置设置?

.net 在运行时临时导入配置设置?,.net,app-config,.net,App Config,我正在为内部屏幕管理系统编写一个插件用户控件。我的BO层是基于CSLA构建的,我使用CSLA'a对象工厂来调用我的数据层。更复杂的一点是,我使用CslaObjectFactoryLoader应用程序设置有两套工厂加载程序:一套用于测试数据层,另一套用于实时数据层。这对于执行TDD非常有效,因为我的测试项目的app.config指定了它自己的假工厂加载器,而我的屏幕的app.config指定了真实的数据工厂加载器。从那里,每个加载程序将为DataPortal提供适当的真实/虚假对象工厂 这里的关键

我正在为内部屏幕管理系统编写一个插件用户控件。我的BO层是基于CSLA构建的,我使用CSLA'a对象工厂来调用我的数据层。更复杂的一点是,我使用CslaObjectFactoryLoader应用程序设置有两套工厂加载程序:一套用于测试数据层,另一套用于实时数据层。这对于执行TDD非常有效,因为我的测试项目的app.config指定了它自己的假工厂加载器,而我的屏幕的app.config指定了真实的数据工厂加载器。从那里,每个加载程序将为DataPortal提供适当的真实/虚假对象工厂

这里的关键是CSLA是硬编码的,以查看自定义工厂要使用的ConfigurationManager.AppSettings[CslaObjectFactoryLoader]。因为这是一个用户控件,所以我需要使用适当的CslaObjectFactoryLoader值修改运行时配置文件。在调试UserControlTestContainer.exe中的用户控件时,我用于将CslaObjectFactoryLoader appSetting导入UserControlTestContainer的配置文件。此方法确实导致对UserControlTestContainer.exe.config文件进行了保存的修改,但我对此不屑一顾,继续工作

现在我已经准备好部署到生产屏幕管理器中,我不想使用相同的永久复制方法,因为来自其他插件屏幕的设置冲突。有没有办法将配置设置临时导入到运行时配置文件中?我可以重定向ConfigurationManager.AppSettings的默认实现的位置吗

这里我的计划B是跳过自定义工厂加载程序,并允许默认ObjectFactoryLoader调用数据层的对象工厂。然后,我会修改我的工厂,以查看应用程序设置,而不是使用测试项目的对象工厂。不过我真的不喜欢这个主意


谢谢大家的帮助。

更新:我已经解决了对象工厂问题,只在测试项目中设置了工厂加载程序覆盖,并在每个类的objectfactory属性中提供了完整的objectfactory类型。然后,自定义测试加载程序解析工厂名称以确定正确的假工厂。然而,EntLib的缓存组件仍然需要它的配置部分,所以我回到了需要影响运行时配置文件而不保存它的问题上!CacheManagerFactory很好地接受IConfigurationSource,因此我能够使用调用程序集为其提供属于DAL DLL的配置文件。看来我已经解决了我的问题,而不是我原来的问题:-