Зависимость Инъекция Круговая Зависимость - PullRequest
1 голос
/ 12 сентября 2011

Я начал новый проект и постепенно наращивал уровень обслуживания, используя ninject и шаблон единицы работы. Я столкнулся с проблемой и ищу помощи.

У меня есть LicenceService, который требует доступа к UserService, поэтому конструктор -

public LicenceService(IRepository<Licence> licenceRepo, IUserService userService)

однако я сейчас нахожусь в ситуации, когда моим UserService нужен доступ к LicenceService, поэтому конструктор будет

public UserService(IRepository<User> userRepo, ILicenceService licenceService)

Полагаю, к этому моменту вы увидите мою проблему с круговыми ссылками. Представьте, что это не редкая проблема, есть ли у кого-нибудь подходящие решения?

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

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

3 голосов
/ 12 сентября 2011

Как насчет третьего сервиса для хранения ссылок на оба и для связи между ними?

То есть, третий сервис будет вызывать оба для определенных целей, а не один должен знать о другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...