我在搜索文档和示例调用autofac时遇到问题所以我在这里问:我需要在运行时更改autofac接受的xml配置以注入实现。我认为这样的场景:维护的db字段,决定如何配置Autofac。所以我的问题是:是否有可能给autofac xml读取数据?我能以某种方式在运行时更改它吗?
欢呼所有
答案 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
中注册您的模块(不是加载模块)