Я не совсем уверен, каковы подробности выпуска 1.1 Unity, но, вообще говоря, когда вы используете Inversion of Control Container, вы должны выполнить следующие шаги:
- Зарегистрируйте типы, о которых знает ваш IoC-контейнер (Unity в вашем случае).Это включает в себя все основные типы, которые вы планируете запрашивать, а также все зависимые типы.В вашем случае вам нужно сообщить ему о
ScheduleDataDetailsDC
, и что именно нужно ввести в каждый из списков, которые считаются зависимостями - В ваших типах должны быть указаны все необходимые зависимости в качестве аргументов конструктора.Это то, на что будет обращать внимание Контейнер IoC, чтобы определить, что необходимо ввести.Если у вас есть необязательные зависимости, вы можете использовать Property Injection для поддержки этого (если ваш контейнер IoC поддерживает это, что, я думаю, делает Unity)
- Вы должны запросить экземпляр вашего зарегистрированного типа из контейнера.Как именно вы это сделаете, зависит от вашего контейнера.Должен быть такой метод, как
Get<T>()
или Resolve<T>
.Как правило, вы собираетесь запрашивать экземпляры классов «высшего уровня», то есть тех, которые используются где-то рядом с точкой входа для вашего программного обеспечения.Если вы сделаете это, и вы применили Dependency Injection для всех зависимых классов в дальнейшем (и вы правильно зарегистрировали все зависимые типы), вы должны получить объект со всеми предоставленными ему зависимостями, а также все зависимости этих объектов.должны быть предоставлены, и в дальнейшем.
Вы также склонны часто видеть интерфейсы, используемые в сочетании с IoC, поскольку вы можете привязать конкретный тип к типу интерфейса, а затем указать этот интерфейс какваша зависимость.Это позволяет вам применять бизнес-правила и значения конфигурации во время процесса привязки, что даст вам возможность использовать различные конкретные реализации в тех случаях, когда вам потребуется сделать это.
Итак, учитывая все это, этоТрудно сказать, что конкретно будет задействовано в использовании Unity в ситуации, которую вы описали выше.Во-первых, вам нужно зарегистрировать ScheduleDataDetailsDC
, но для того, чтобы получить зависимости на месте, вам также необходимо зарегистрировать каждый из типов List, или, более конкретно, каждый конкретный объект, который будет находиться в каждом списке (а затем, конечно, всезависимости для этих классов).Поскольку я не совсем уверен, какова роль этих списков, мне трудно сказать, как вы могли бы сделать это (или даже если бы вы могли сделать это).