Я новичок в терминологии Unity и DI, поэтому пытаюсь понять, как это работает.У меня есть следующий код, который реализует DI с использованием контейнера Unity.
public class DashboardService: IDashboardService
{
private readonly IRepository<USERROLE> repoUserRole;
private readonly IRepository<INSTITUTION> repoInstitution;
public DashboardService(
IRepository<USERROLE> repoUserRole, IRepository<INSTITUTION> repoInstitution)
{
this.repoUserRole = repoUserRole;
this.repoInstitution = repoInstitution;
}
public List<USERROLE> GET(List<string> Id)
{
// Use repoUserRole object to get data from database
}
}
Эта служба вызывается контроллером:
public class DashboardController : ApiController
{
private readonly IDashboardService dashboardService;
public DashboardController(IDashboardService dashboardService)
{
this.dashboardService = dashboardService;
this.mapper = mapper;
}
//Action method which uses dashboardService object
}
Вот конфигурация Unity:
var container = new UnityContainer();
container.RegisterType(typeof(IDashboardService), typeof(DashboardService))
.RegisterType(typeof(IRepository<>), typeof(Repository<>));
return container;
Вопросы:
- На данный момент мой код работает нормально, но если я закомментирую конструктор
DashboardService
, я получу нулевые объекты репозитория. - Я разрешаю зависимости в
Unity
для интерфейсов репозитория, так почему я получаю нулевое значение там? - Есть ли способ передать зависимость репозитория без использования шаблона конструктора?