CaliburnとC#を使用していますが、これは一般的なMVVM/DIの質問のようです。
Noteというモデルオブジェクトが渡されるビューモデルNoteViewModelがあるとしましょう。
ここにいくつかのコードがあります:
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には、これを行うための組み込みの方法がありますか?