Я должен согласиться с Бони. Кшиштоф: Я понимаю вашу точку зрения, но, пожалуйста, дайте нам знать, что вы имеете в виду под «внедрением поведения в другом месте». Вы имеете в виду решение, реализованное в 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 мне нужна зависимость, которая используется всеми моими контроллерами, однако я не могу использовать инъекцию на основе конструктора в атрибуте.

Так какой тут самый чистый выход? Как я могу предоставить зависимость?

Ответы на вопрос(2)

Ваш ответ на вопрос