Я новичок в Unity, но этот вопрос более общий для IoC, и я довольно новичок в реализации IoC в целом. У меня есть решение VS2010 с этой структурой проекта (слегка упрощено):
- Бизнес-объекты - папка
- DomainModel (класс Lib prj.) - сущности Entity Framework 2 POCO
- Уровень данных - папка
- DataAccess (класс Lib prj.) - EF2 EDMX
- Репозиторий (Class Lib prj.) - Интерфейс IRepository и конкретные реализации репозитория
- Презентационный слой - папка
- Сервисный уровень
- Сервис (Class Lib prj.) - Интерфейс IService и конкретные реализации сервиса (шаблон фасада)
Все ссылки на проект DomainModel.
Репозиторий ссылается на проект DataAccess.
Сервисный уровень ссылается на проект репозитория.
WebUI ссылается на проект службы и сборки Unity.
У меня есть Unity, настроенный на корректное внедрение всех типов моих служб в WebUI (global.asax через пользовательский UnityControllerFactory.cs). Но как мне настроить Unity на сервисном уровне для внедрения объектов репозитория?
Я не хочу ссылаться на проект Repository из WebUI, чтобы гарантировать, что во время разработки не будет ярлыков и обходить слой Service.
Пара идей, которые у меня есть (не уверен, что это решит их):
- Переместите интерфейсы IRepository в DomainModel и добавьте вызовы Unity.RegisterType <> для IRepository
- Настройка конфигурации Unity в Web.config
Будем весьма благодарны за любые указания, в частности, как настроить Unity для сервисного уровня / репозитория, а также в целом о проекте.