#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 внутри функции-члена, а не конструктора. Я не знаю, плохой это дизайн или нет, но на данный момент это единственный способ решить ее. Я не могу перепроектировать, потому что я создаю оболочку поверх существующего приложения