Как получить все экземпляры универсального класса с картой структуры

В карте структуры у меня есть следующая строка, работающая с событиями домена:

public void Dispatch<TEvent>(TEvent eventToDispatch) where TEvent : IDomainEvent
        {
            foreach (var handler in ObjectFactory.GetAllInstances<IDomainEventHandler<TEvent>>())
            {
                if (handler.IsActive)
                    handler.Handle(eventToDispatch);
            }
        }

Я регистрирую их в реестре StructureMap следующим образом:

x.AddAllTypesOf(typeof(IDomainEventHandler<>));

Первый блок выше выдает неизвестную ошибку - код карты структуры 400. Кто-нибудь знает, как я могу получить определенные типы универсального класса из контейнера карты структуры?

ТИА

Андрей


person REA_ANDREW    schedule 22.12.2009    source источник


Ответы (1)


Первое, что я бы проверил, это то, что выводит следующее:

Console.WriteLine(ObjectFactory.WhatDoIHave());

Убедитесь, что ваши обработчики событий зарегистрированы так, как вы ожидаете.

Если классы зарегистрированы, как вы ожидаете, то я думаю, что именно так вы хотите разрешить свой IDomainEventHandler:

foreach (var handler in ObjectFactory.ForObject(eventToDispatch)
                                     .GetAllClosedTypesOf(typeof(IDomainEventHandler<>))
                                     .As<IDomainEventHandler<TEvent>>())
person Jeremy Wiebe    schedule 05.01.2010
comment
Спасибо, метод WhatDoIHave() привел меня к выводу, что проблема заключалась в отсутствующем обработчике событий домена для события домена, которое я поднял. Ура снова - person REA_ANDREW; 07.01.2010