Я нахожусь в проекте, который использует подход DDD.Мы используем контейнер IOC Unity MVC 4 для DI с ASP.NET MVC 4. Я создал статический класс, который реализует некоторые методы, которые были реализованы в классе ViewModel.Это точно не способ DDD, но мы находимся в конце спринта SCRUM и самого проекта.Проект не был создан мной, я просто сейчас оказываю некоторую поддержку.Когда я запускаю SONAR для качества кода, он говорит, что я должен реализовать DI.Проблема в том, что конструктор по умолчанию ViewModel инициализируется из класса контроллера без параметров.Но я реализовал DI в этом классе ViewModel.Я зарегистрировал его в файле загрузчика Unity в моем проекте презентации.Как я могу вызвать класс ViewModel сейчас, если его конструктор по умолчанию имеет частное свойство интерфейса Readyonly в параметре конструктора?Как я могу инициализировать класс ViewModel в контроллере?Должен ли я использовать инъекцию свойства?Если да, не могли бы вы показать мне какой-нибудь код и правильный способ его регистрации в файле загрузчика?
т.е.:
Просмотр модели:
public class MyViewModel
{
private readyonly IMy My;
public MyViewModel(IMy my)
{
My = my;
}
}
Контроллер:
public class MyController
{
public ActionResult MyAction()
{
// This is the problem....
MyViewModel myVm = new MyViewModel() ????
}
}
Unity:
container.RegisterType<IMy, My>();