Я проверил образец в библиотеке Spring4d на управляемой событиями архитектуре.Spring4d Event Driven Architecture или Как получить все экземпляры данного интерфейса
Из того, что я могу понять, когда событие опубликовано, ServiceLocator
создаст экземпляр всех классов, реализующих интерфейс IEventHandler<TEventClass>
, и попросит обработчики обработать это событие.
Хотя, существует рекомендуемый подход, чтобы запрашивать уже созданные службы для обработки события.
Предположим, у меня есть произвольное количество Controllers
, которые являются инстанцированными. Некоторые из них могут быть тем же классом, который создается несколько раз. Некоторые из них могут быть уникальными.
Я хочу, чтобы эти экземпляры Controllers
прослушивали событие TUserAdded
. Эти Controllers
реализуют интерфейс IEventHandler<TUserAdded>
. Я не хочу, чтобы не-экземпляр Controllers
прослушивал событие.
В некотором смысле, я хотел бы получить список всех экземпляров, которые реализуют событие IEventHandler<TUserAdded>
.
Кроме того, в идеальном случае, если Controller
зарегистрирован как Singleton
container.RegisterType<TMySingletonController>.AsSingleton;
Я хотел бы создать экземпляр TMySingletonController
, если он уже не экземпляр, то пусть это обработать событие.
Есть ли встроенный подход в Spring4d, чтобы получить список всех экземпляров данного интерфейса?
Несомненно, вы должны отслеживать их. –