Unity フレームワークのドキュメントを読んで混乱しました。 リンク
一部のデバイスを検索する WPF アプリケーションを作成しています。
私のメインウィンドウからの私のコードの下。ご覧のとおり、メイン ウィンドウ内でまだ UnitOfWork と DeviceService を宣言しています。このコードを依存性注入を適用して置き換えたいと考えています。同時に、メイン ウィンドウ内にビューモデルも挿入します。
public Window1()
{
InitializeComponent();
UnitOfWork myUnitOfWork = new UnitOfWork();
DeviceService dService = new DeviceService(myUnitOfWork);
_vm = new DeviceViewModel(dService);
this.DataContext = _vm;
_vm.SearchAll();
}
以下のコードで試してみましたが、コンテナの設定に失敗しました。本当の質問は、どのように始めればよいですか? プログラムの構造を完全に変更する必要がありますか?
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
IUnityContainer container = new UnityContainer();
UnitOfWork myUnitOfWork = new UnitOfWork();
container.RegisterInstance<UnitOfWork>(myUnitOfWork);
Window1 w1 = new Window1();
w1.Show();
}
}
提案されたチュートリアルを実行しました。プロパティ インジェクションをどのように構成する必要があるかは、まだ明確ではありません。
ビューモデルは Window 1 クラスに挿入する必要があるため、依存関係プロパティを作成する必要があると想定しています。
private DeviceViewModel viewModel;
[Dependency]
public DeviceViewModel ViewModel
{
get { return viewModel; }
set { this.DataContext = value; }
}
DeviceViewModel が DeviceService と UnitOfWork に依存していることを知って、ビューモデルをウィンドウ 1 に挿入するにはどうすればよいですか?
//CONSTRUCTOR
public DeviceViewModel(DeviceService service)
{
Service = service;
SearchCommand = new SearchCommand(this);
}
private UnitOfWork myUnit;
public DeviceService(UnitOfWork unit)
{
myUnit = unit;
}