在启动时注册过滤器时,如何传入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 :(得分:2)
services.AddMvc().AddMvcOptions(o =>
{
o.Filters.Add(new ServiceFilterAttribute(typeof(MyFilterAttribute)));
});
factory.RegisterType(typeof(MyFilterAttribute)).InstancePerDependency();