2012-03-21 2 views
0

это возможно в Moq Framework это?Получить объект из контейнера, который был введен в зависимость?

Я правильно сконфигурировал контейнер и использовал его, но можно получить конкретный экземпляр типа, который был введен? Например, вложенный репозиторий для моей службы, и я хотел бы получить экземпляр репозитория, используемый в сервисе, это возможно?

_container.Configure(c => 
{ 
c.For<IUserApplicationService>().Use<UserApplicationService>(); 
c.For<IRepository<LegalEntity>>().Use<LegalEntityRepository>(); 
c.For<IRepository<User>>().Use<UserRepository>(); 
c.For<ILocalMembershipService>().Use<AspMembershipServiceAdapter>(); 
c.For<IEmailService>().Use(emailStub); 
}); 

теперь я сделать это таким образом, что я использовать одиночный один объект для IEmailService зависимости

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

+3

Не могли бы вы добавить фрагмент кода того, как вы впрыскиваете и т. Д.? Помог бы. –

+0

Вы утверждаете, что использовали Moq для реализации интерфейса, сконфигурировали контейнер DI с этим и разрешили экземпляр другого типа, который зависел от насмешливого интерфейса с контейнером DI? Если это так, то эффективно нет конкретного типа - это тип Moq, сгенерированный на лету. – TrueWill

ответ

0

Итак, вы хотите получить доступ к базовому типу из вашего введенного интерфейса? Вы всегда можете отливать, но это было бы против принципов DI.

+0

Как продвигаться к базовому типу против принципов DI? Это просто использование LSP. –

+0

Потому что вы не должны знать, что базовый класс существует. – Mathieu

0

Учитывая, что ваш контейнер поддерживает заводы, как насчет создания фабрики для IEmailService в контейнере, который создает макет IEmailService, сохраняет его где-то доступным для ваших тестов и возвращает макет.

Смежные вопросы