Внедрение сеттера в существующий экземпляр службы в замке Виндзор - PullRequest
1 голос
/ 19 октября 2010

Поддерживает ли Castle Windsor применение установки сеттера к существующим экземплярам службы?У меня есть случай, в котором я не могу контролировать создание определенных экземпляров классов, в то время как мне нужно разрешить их зависимости.Это исключает внедрение конструктора, но оставляет дверь открытой для внедрения сеттера, поскольку я могу перехватывать новые экземпляры сразу после их создания.

Я знаю, что Castle Windsor поддерживает установку сеттера из коробки, я просто незнаю, возможно ли (и если да: как) использовать его явно, не используя метод Resolve.

Я также знаю, что такое возможно в StructureMap, используя метод ObjectFactory.BuildUp, чтобы повыситьЯ надеюсь найти эквивалент в Castle Windsor.

Если вам интересно, я применяю внедрение зависимостей к страницам в ASP.NET WebForms, предоставляя пользовательский PageHandlerFactory.Я не хочу идти по пути создания самого обработчика страницы, я должен оставить это базовой реализации в классе PageHandlerFactory.

public class CustomPageHandlerFactory : PageHandlerFactory
{
    public override IHttpHandler GetHandler(HttpContext context, string requestType, string virtualPath, string path)
    {
        IHttpHandler handler = base.GetHandler(context, requestType, virtualPath, path);
        Page page = handler as Page;

        if (page == null)
        {
            return handler;
        }

        // Resolve dependencies using setter injection...

        return page;
    }
}

Ответы [ 3 ]

1 голос
/ 19 октября 2010

Поддерживает ли Castle Windsor применение инъекции сеттера к существующим экземплярам службы?

Нет.Ознакомьтесь с FAQ для обоснования.

Я применяю внедрение зависимостей к страницам в ASP.NET WebForms,

См. этовопрос .

1 голос
/ 22 октября 2010
1 голос
/ 19 октября 2010

См. Нижнюю часть этой статьи:

http://www.jeremyskinner.co.uk/2008/11/08/dependency-injection-with-aspnet-mvc-action-filters/

Джереми предоставляет метод расширения для контейнера Windsor, который реализует внедрение свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...