我想使用autofac IoC来初始化注入MVC控制器构造函数的服务。假设服务接口如下所示:
public interface IService
{
void SetValidationContainer(IReadOnlyDictionary<string, ModelStateEntry> validations);
}
和控制器ctor:
public class HelloWorldController : Controller
{
private readonly IService _service;
public HelloWorldController(IService service)
{
_service = service;
_service.SetValidationContainer(ModelState);
}
}
是否可以将“SetValidationContainer(ModelState)”调用到DI配置?并使用这样的东西:
container.Register<IService>
.As<ServiceImplementaion>
.AfterInjectedInto<Controller>
.Call(service, controller => service.SetValidationContainer(controller.ModelState));
答案 0 :(得分:2)
Autofac 提供3个事件。
.
:在使用组件之前提出OnActivating
:在组件完全构建后引发OnActivated
:处理组件时引发在您的情况下,您可以使用OnRelease
初始化您的组件。
OnActivated
查看 Autofac Lifetime Events文档以获取更多信息