Добавить заводскую поддержку для регистрации Windsor динамически - PullRequest
0 голосов
/ 25 октября 2010

У меня есть интерфейс

public interface IResolver<T>
{
    T Resolve();
}

Я знаю, что это не идеал (локатор служб - это анти-шаблон и все), но в некоторых случаях это все же необходимо (например, активация службы WCF -Я не хочу создавать экземпляр канала до тех пор, пока Resolve () не будет явно вызван ... и в случае BasicHTTP канал может нуждаться в многократном повторении Resolve (), поскольку канал закрывается после каждого вызова операции),И если в фабрику вставлены биты, а сам контейнер внедрен в конструктор, верно?

Я хочу, чтобы любой класс, который наследует IResolver, автоматически регистрировался как Фабрика, когда они регистрируются в контейнере.То есть я хочу автоматически вызвать AsFactory в ComponentRegistration до того, как будет обработана регистрация.

Как мне это сделать?

Заранее спасибо.

Ответы [ 2 ]

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

Взгляните на Типизированный завод .При этом вы можете просто зависеть от Func<ISomeService>, и Виндзор заполнит соответствующую функцию для ее автоматического разрешения.

0 голосов
/ 25 октября 2010

Вы можете определенно сделать это с пользовательским средством, хотя может быть лучший способ. Извините, у меня нет времени на дальнейшее расследование.

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