Следующее предыдущее задание, которое я написал в StackOverFlow У меня есть следующая структура проекта для моего приложения для настольных приложений Prism.Разрешение зависимостей Unity в приложении Prism Desktop
Библиотека классов: Application.Common -> это содержит все мои DTOs и сервисные контракты, которые определены в моем уровне услуг WCF, который совершенно иное решение.
модули:Application.Modules.ServicesModule -> здесь я добавил ссылки на моей реализации WCF с помощью Add Service Reference. Я также зарегистрировать реализации моих типов IMyServiceContract определен в сборке Application.Common поэтому метод инициализации выглядит следующим образом: -
public void Initialise()
{
_container.RegisterType<IMyService, MyServiceClient>(new InjectionConstructor());
}
Наконец у меня есть еще один модуль Application.Modules.FunctionalityModule это имеет конструктор, определенный следующим
public FunctionalityModule(IMyService myService){}
, когда приложение пытается разрешить зависимость в FunctionalityModule во время выполнения следующих действий происходит ошибка
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The current type, AccountsSln.Common.ServiceContract.IMyService, is an interface and cannot be constructed. Are you missing a type mapping?
Обычно я видел эту ошибку, потому что зависимость не была зарегистрирована, но в этом случае я знаю, что она есть в ServiceModule. Это связано с тем, что регистрация происходит в разных модулях? Есть ли другие предложения о том, как я могу реализовать свою структуру проекта для поддержки служб WCF в настольном приложении Prism?
Благодаря
Alex
Edit: Как я хотел использовать Общую сборку, чтобы определить свои контракты на обслуживание У меня были проблемы при использовании Add Service Reference. Оказывается, если вы используете Add Service Reference, сгенерированный код использует метаданные для создания типов клиентских сторон. Они имеют ту же подпись, что и в общей сборке, но различны. Чтобы я мог использовать контракты в общей сборке, я получил вдохновение из этого поста http://xaml.geek.nz/working-slightly-smarter-with-wcf. Это заставило меня начать в правильном направлении, но я думаю, что мне придется изучить, как сделать код более подходящим для производственной среды.
Вы уверены, что ServicesModule загружается? И загружается ли он перед FunctionalityModule? –
Да, если я нарушаю Инициализацию в ServiceModule, это определенно попадает. Кроме того, ServiceModule находится перед модулем FunctionalityModule в Bootstrapper, поэтому я предполагаю, что это означает, что он загружается раньше. – lostinwpf
Где экземпляр _container поступает из ServiceModule? Он вводится через его конструктор или создается в модуле? –