Я использую Caliburn и C #, но я чувствую, что это общий вопрос MVVM / DI.
Допустим, у меня есть модель представления NoteViewModel, которой передан объект модели с именем Note.
Вот код:
class NoteViewModel : PropertyChangedBase
{
private readonly Note _note;
public NoteViewModel(Note note)
{
_note = note;
}
public string Title
{
get { return _note.Title; }
set { _note.Title = value; NotifyOfPropertyChange(() => Title); }
}
}
Прямо сейчас этот объект создается путем вызова new () и передачи объекта модели.
Хорошо, это прекрасно работает, но теперь мне нужно добавить метод, который требует импортированный класс из моего контейнера DI.
Так я просто вызываю ServiceLocator.Current.GetInstance (), чтобы получить его? Или я должен спроектировать эту модель представления, которая будет создаваться через контейнер DI, и каким-то образом настроить способ передачи объекта Note?
Как правильно спроектировать эту модель вида? В основном модель представления «PerInstance», для которой требуется объект модели. У Caliburn есть встроенный способ сделать это?