在阅读了 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; }
}
我如何将我的视图模型注入窗口 1,知道 DeviceViewModel 依赖于 DeviceService 并再次依赖于 UnitOfWork ?
//CONSTRUCTOR
public DeviceViewModel(DeviceService service)
{
Service = service;
SearchCommand = new SearchCommand(this);
}
private UnitOfWork myUnit;
public DeviceService(UnitOfWork unit)
{
myUnit = unit;
}