我使用 DictionaryAdapter 从我的 asp.net 网站的 appSettings 部分检索设置。IoC 配置在启动时完成一次,并且使用单个 Configuration.AppSettings 对象注册各种具有 getter 的不同接口:
var dictionaryAdapterFactory = new DictionaryAdapterFactory();
container.Register(
Types
.FromAssemblyNamed(assemblyName)
.Where(t => t.Name.EndsWith("AppSettings"))
.Configure(
component => component.UsingFactoryMethod(
(kernel, model, creationContext) =>
dictionaryAdapterFactory.GetAdapter(creationContext.RequestedType, ConfigurationManager.AppSettings))));
Web.config 文件中托管的 appSettings 部分工作正常,但当我想在运行时更新某些设置时它有其缺点。因为它是 web.config 文件,所以整个应用程序被重新启动。我希望能够在运行时修改配置而不会重新启动网站作为副作用。因此,我搬到了单独的文件中:
<appSettings configSource="AppSettings.config">
现在,通过 ConfigurationManager.AppSettings["key"] 检索它们时会反映更改,但在通过 DictionaryAdapter 的动态接口访问时不会反映更改。
有没有办法告诉 DA 观察源代码的变化而不是缓存值?