У меня есть атрибуты фильтра MVC и WebAPI с параметрами, которые должны поднять некоторые фильтры действий. Сейчас мы переходим на autofac, и мне нужно преобразовать DI-Definition.
В Ninject у меня есть что-то вроде этого:
Kernel.BindFilter<ShopAuthorizationMVCFilter>(System.Web.Mvc.FilterScope.Controller, 0)
.WhenControllerHas<ShopAuthorizationMVC>()
.InRequestScope()
.WithConstructorArgumentFromControllerAttribute<ShopAuthorizationMVC>("rechte", o => o.Rechte);
Я могу украсить действия и контроллеры следующим образом:
[ShopAuthorizationMVC(RightsEnum.CanAccessMycontroller)]
public class MyController : Controller {}
Это прекрасно работает с Ninject, но я совершенно не представляю, как написать это в Auotofac.
Что у меня есть до сих пор:
builder.Register(c =>
new ShopAuthorizationMVCFilter(c.Resolve<IAuthClass>(), default(RightsEnum[])))
.AsActionFilterFor<Controller>()
.InstancePerRequest();
Но я не знаю, как а) применить это правило только к контроллерам (и\или действиям) с моим атрибутом фильтра и б) передать параметры.