具有iserviceProvider依赖性的Asp.net 5 mvc 6动作过滤器

时间:2016-04-06 15:28:46

标签: c# dependency-injection asp.net-core-mvc

在启动时注册过滤器时,如何传入IServiceProvider实例?

public void ConfigureServices(IServiceCollection services)
{
  services.AddMvc().AddMvcOptions(o =>
        {

            o.Filters.Add(new MyFilterAttribute(???)); //how to get IServiceProvider
        });
}

public class MyFilterAttribute : ActionFilterAttribute
{
  public MyFilterAttribute(IServiceProvider serviceProvider)
  {
     var myService = (IMyService)serviceProvider.GetService(typeof(IMyService));
  }
}

1 个答案:

答案 0 :(得分:2)

services.AddMvc().AddMvcOptions(o =>
{
    o.Filters.Add(new ServiceFilterAttribute(typeof(MyFilterAttribute)));

});

factory.RegisterType(typeof(MyFilterAttribute)).InstancePerDependency();