从DB读取Autofac xml配置并更改其运行时

时间:2015-03-03 09:43:56

标签: xml configuration inversion-of-control autofac code-injection

我在搜索文档和示例调用autofac时遇到问题所以我在这里问:我需要在运行时更改autofac接受的xml配置以注入实现。我认为这样的场景:维护的db字段,决定如何配置Autofac。所以我的问题是:是否有可能给autofac xml读取数据?我能以某种方式在运行时更改它吗?

欢呼所有

1 个答案:

答案 0 :(得分:1)

您可以从ConfigurationModule继承并定义SectionHandler属性。然后,您可以注册自定义模块以根据需要加载配置。

    public class DbConfigurationModule : ConfigurationModule
    {
        public DbConfigurationModule()
        {
            using(XmlReader reader = /*getReaderFromDb*/)
            {
                this.SectionHandler = SectionHandler.Deserialize(reader); 
            }
        }
    }

    // Register your custom module
    ContainerBuilder builder = new ContainerBuilder();
    builder.RegisterModule(new DbConfigurationModule());

当您想要重新加载配置时,您将不得不创建一个新的IContainer(您无法卸载模块)或在新的ILifetimescope中注册您的模块(不是加载模块)