Виндзорский замок: подключение к механизму разрешения и освобождения контейнера - PullRequest
0 голосов
/ 28 августа 2009

Я пытаюсь реализовать автоматическую регистрацию моих слушателей в одноагрегатном агрегаторе событий, когда слушатели создаются контейнером IoC - в основном то, что делает Джереми Миллер, но с Castle вместо StructureMap.

Итак, я хочу иметь возможность «перехватывать» механизм создания объекта Виндзора и, если объект поддерживает интерфейс маркера (скажем, IListener), вызывать метод Subscribe для EventAggregator (который также зарегистрирован в контейнере), чтобы сделать вновь созданный объект подписчиком на события. Кроме того, до того, как экземпляр объекта был освобожден контейнером, я хочу иметь возможность отменить его подписку.

Я немного озадачен тем, какой механизм в Виндзорском замке я должен использовать для достижения чего-то подобного? Я начал изучать интерфейс IInterceptor, но он, кажется, перехватывает все вызовы объекта, а это не то, что мне действительно нужно (и я хочу избежать по соображениям производительности).

Ответы [ 2 ]

1 голос
/ 28 августа 2009

IKernel предоставляет различные события , такие как ComponentCreated и ComponentDestroyed, которые вы можете использовать для создания этого. В сети есть много образцов .

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

0 голосов
/ 14 апреля 2011

Вы также можете использовать OnCreate следующим образом:

container.Register(
        Component.For(typeof (Foo)).OnCreate(
          (k, c) => {
            // ...
            eventAggregator.Subscribe(c);
            // ...
          }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...