在控制器构造函数中初始化服务

时间:2016-07-08 09:35:16

标签: asp.net-mvc dependency-injection autofac

我想使用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));

1 个答案:

答案 0 :(得分:2)

Autofac 提供3个事件。

  • .:在使用组件之前提出
  • OnActivating:在组件完全构建后引发
  • OnActivated:处理组件时引发

在您的情况下,您可以使用OnRelease初始化您的组件。

OnActivated

查看 Autofac Lifetime Events文档以获取更多信息