Pau*_*opf 80 ioc-container autofac
是否可以在运行时注册服务,这意味着在ContainerBuilder构建并Container创建(并ContainerBuilder处置)之后?
Pet*_*old 95
是的,您可以使用以下Update方法ContainerBuilder:
var newBuilder = new ContainerBuilder();
newBuilder.Register...;
newBuilder.Update(existingContainer);
Run Code Online (Sandbox Code Playgroud)
由于不推荐使用ContainerBuilder.Update,因此新建议使用子生存期范围.
将注册添加到终身范围
Autofac允许您在创建生命周期范围时"动态"添加注册.当您需要执行某种"点焊"限制注册覆盖时,或者如果您通常只需要一些您不想在全局注册的范围内的其他内容时,这可以帮助您.您可以通过将lambda传递给BeginLifetimeScope()来实现此目的,该BeginLifetimeScope()接受ContainerBuilder并添加注册.
using(var scope = container.BeginLifetimeScope(
builder =>
{
builder.RegisterType<Override>().As<IService>();
builder.RegisterModule<MyModule>();
}))
{
// The additional registrations will be available
// only in this lifetime scope.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14280 次 |
| 最近记录: |