Я должен согласиться с Бони. Кшиштоф: Я понимаю вашу точку зрения, но, пожалуйста, дайте нам знать, что вы имеете в виду под «внедрением поведения в другом месте». Вы имеете в виду решение, реализованное в sutekishop (см. AuthenticateAttribute + AuthenticateFilter)? Это решение, из-за анти-паттерна, не выглядит таким чистым, как предложенное в следующем ответе Бони ... Я тоже этим пользуюсь и до сих пор счастлив. Но, пожалуйста, расскажите больше о том, чего нам здесь не хватает, Кшиштоф: я бы очень хотел полностью понять вашу точку зрения.
м приложении ASP.Net MVC я реализовал Custom ActionFilter для авторизации пользователей.
Я использую CastleWindsor для обеспечения внедрения зависимостей во все контроллеры следующим образом:
protected virtual IWindsorContainer InitializeServiceLocator()
{
IWindsorContainer container = new WindsorContainer();
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container));
container.RegisterControllers(typeof(HomeController).Assembly);
ComponentRegistrar.AddComponentsTo(container);
ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(container));
return container;
}
В моем CustomAttribute мне нужна зависимость, которая используется всеми моими контроллерами, однако я не могу использовать инъекцию на основе конструктора в атрибуте.
Так какой тут самый чистый выход? Как я могу предоставить зависимость?