从数据库中读取 Autofac xml 配置并在运行时更改它

Read Autofac xml configuration from DB and change it runtime

我在搜索有关 autofac 的文档和示例时遇到问题,所以我在这里问这个问题:我需要在运行时更改 autofac 接受注入实现的 xml 配置。我曾想过这样的场景:维护并决定如何配置 Autofac 的数据库字段。所以我的问题是:是否可以将 xml 从数据库中读取的内容提供给 autofac?我可以在运行时以某种方式更改它吗?

大家干杯

您可以继承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 中注册您的模块(不'已加载模块)