Это сводит меня с ума ...
Две сборки / проекты в игре:
Проект инфраструктуры, в котором есть интерфейс:
IDtoMapping<in TDto, out TDomain>
И проект приложения, ссылающийся на Infx, с реализацией:
PatientMapping : IPatientMapping
... и интерфейс маркера, просто для ясности:
public interface IPatientMapping : IDtoMapping<PatientDTO, Patient> {}
Когда приложение загружается, запускается:
_container.RegisterType<IPatientMapping, PatientMapping> ( new ContainerControlledLifetimeManager () );
Это происходит в проекте приложения через процесс начальной загрузки всей системы.(Сразу после запуска этой строки (через часы) я могу успешно разрешить ее.)
Наконец, мы пытаемся разрешить ее (в службе WCF, в проекте приложения)
public PatientService (
IPatientRepository patientRepository,
ISessionSource session,
IPatientMapping patientDtoToDomainMapper )
{
.. и это не удается.С помощью ResolutionFailedException «Не удается создать экземпляр интерфейса и т. Д.» Я установил точки останова при вызове .Resolve, при регистрации и т. Д. Все попадает, как и ожидалось.Но когда приложение пытается разрешить / построить службу WCF, Unity не может разрешить параметр IPatientMapping ... он как бы забыл.
Я в растерянности .. Я обновился до Unity 2.0, добавилэтот промежуточный маркерный интерфейс удалил общий интерфейс и просто использовал ванильный ... все безрезультатно.Другие зависимости в системе разрешаются очень хорошо, включая другие параметры в том же конструкторе WCF.
Единственное, что мне говорит моя интуиция, может ли это иметь какое-то отношение к сборкам?То, что вызов .Resolve происходит в проекте Infx, но реализация фактически живет в app-проекте?Во время выполнения все сборки загружаются, так что это не должно иметь большого значения, верно?
Спасибо за любые идеи!