Ошибка циклической зависимости Unity WebAPI

#c# #asp.net-mvc #asp.net-web-api #unity-container #circular-dependency

#c# #asp.net-mvc #asp.net-web-api #unity-контейнер #циклическая зависимость

Вопрос:

Я использую Unity.WebAPI в моем проекте .net для регистрации и разрешения зависимостей. У меня есть четыре проекта, которые

i) интерфейсы
ii) UserService (фактическая реализация)
iii) ProductService (фактическая реализация)
iv) Проект веб-API, который ссылается на все вышеперечисленные три, а также содержит конфигурацию unity.

Теперь мои конкретные классы UserService и product service зависят друг от друга, поэтому, когда я пытаюсь их разрешить, это выдает ошибку переполнения стека.

Мой код в unityConfig в проекте web api выглядит следующим образом:

 container.RegisterType<IUserService, UserService>(); //Userservice constructor injects IProductService

container.RegisterType<IProducService, ProductService>(); //ProductServices constructor injects IUserservice
  

Я думал, что создание отдельного проекта интерфейса не приведет к циклической зависимости.

С нетерпением ждем.

Комментарии:

1. Почему они зависят друг от друга? Как бы вы создали их экземпляр без внедрения зависимостей?

2. То, что вы там описываете, — это именно то, что является циклической зависимостью. Решение: редизайн.

3. решение, которое я нашел на данный момент, заключается в том, что в случае циклической зависимости я не вводю IService, а вводю контейнер и использую его для разрешения IService внутри функции-члена, а не конструктора. Я не знаю, плохой это дизайн или нет, но на данный момент это единственный способ решить ее. Я не могу перепроектировать, потому что я создаю оболочку поверх существующего приложения