2016-04-06 3 views
1

при регистрации вашего фильтра при запуске, как вы можете передать экземпляр IServiceProvider?Asp.net 5 mvc 6 фильтр действий с 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)); 
    } 
} 
+0

[Может быть связано] (https://github.com/aspnet/Mvc/issues/4167) –

ответ

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

}); 

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

Избили меня к нему. Существует хорошее объяснение того, как это работает (и альтернативный подход) [здесь] (http://www.strathweb.com/2015/06/action-filters-service-filters-type-filters-asp-net-5 -mvc-6 /). – NightOwl888

Смежные вопросы