Уведомить родительский объект контекста о создании дочернего объекта контекста - PullRequest
0 голосов
/ 24 февраля 2012

это ситуация, которую я хотел бы реализовать.

public class ComponentRepository 
{
    public void Register(IComponent component) 
    {
        // store component in collection
    }
}
<!-- root context -->    
<object id="Repository" type="NameSpace.ComponentRepository" />

<!-- child context (0 - n contexts) -->
<object id="Component" type="NameSpace.Component"/>

Я хотел бы зарегистрировать все IComponent объекты с ComponentRepository.Я полагаю, что это можно сделать с помощью какого-то механизма публикации / подписки, но я бы хотел, чтобы мои классы были чистыми (без реализации какого-либо из интерфейсов spring.net).Каков наилучший способ добиться этого?

1 Ответ

1 голос
/ 26 февраля 2012

Я понял ваш вопрос следующим образом: после создания экземпляра Component дочернего контекста должен быть вызван метод Register ComponentRepository, определенный в другом контексте.

Насколько я знаю, xml-декларативный способ достижения того, чего вы хотите, не существует.

Я бы предложил либо сделать ваш ComponentRepository IApplicationContextAware (это то, чего вы явно не хотите)или создать новый класс IApplicationContextAware, который получает зависимость ComponentRepository.

Таким образом, вы можете вызвать метод ApplicationContext '* GetObjectsOfType и получить все объекты IComponent для передачи вComponentRepository.

...