Как в IoC-контейнере описать тип, который должен иметь ссылку на сам контейнер? - CodeHelper

Как в IoC-контейнере описать тип, который должен иметь ссылку на сам контейнер?

1

Интересен Spring.NET

Лучший ответ:

0

Класс, который хочет знать о контексте должен реализовать интерфейс IApplicationContextAware, добавляющий свойство ApplicationContext. Если сам этот объект объявляется внутри контейнера, то после инициализации это свойсво будет указывать на актуальный контекст.

Есть еще аналогичный интерфейс Spring.Objects.Factory.IObjectFactoryAware, реализующий его объект будет иметь ссылку на IObjectFactory.

Alexander

А как нужно описывать такой объект в контейнере?

<object id="IMenu"
        type="OnVision.Shell.Presenters.MainMenuPresenter, OnVision"
        singleton="true"/>

namespace OnVision.Shell.Presenters
{
    public class MainMenuPresenter: MenuModel, IApplicationContextAware
...

Вот это не сработало.

Чак Норрис

В контейнере такой объект описывается как обычно. Spring.NET сам распознает, что объект хочет получить ссылку на контекст и устанавливает соответствующее поле.

Новые ответы


0

Как вариант, зарегистрировать в контейнере сам контейнер и пользоваться стандартным DI-механизмом.


v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.