[英]How do apply I Dependency Injection with MvvM?
我讀過Mark Seemann的書“依賴注入在.NET中”。 而且我想我理解他寫的大部分內容。
我遇到的問題是我想將視圖模型注入視圖中。 我知道這可以通過
public class CompositeRoot
{
private IContainer container;
public CompositeRoot()
{
//build the container
var builder = new ContainerBuilder();
builder.RegisterType<DatabaseContext>().As<IDatabaseContext>();
builder.RegisterType<MainViewModel>().As<IMainViewModel>();
container = builder.Build();
//create a window and inject a viewmodel
MainWindow mainWindow = container.Resolve<MainWindow>();
mainWindow.DataContext = container.Resolve<IMainViewModel>();
mainWindow.Show();
}
}
但這似乎相當粗糙。
我在考慮:
public class CompositeRoot
{
private IContainer container;
public CompositeRoot()
{
//build the container
var builder = new ContainerBuilder();
builder.RegisterType<DatabaseContext>().As<IDatabaseContext>();
builder.RegisterType<MainViewModel>().As<IMainViewModel>();
container = builder.Build();
}
public IMainViewModel MainVM
{
get { return container.resolve<IMainViewModel>(); }
}
}
然后輸入xaml代碼
DataContext="{Binding MainVM, Source={StaticResource IoC}}"
(在app.xaml中,我將compositeroot命名為IoC資源)
我現在的問題是,這是一個很好的依賴注入,還是這仍然是服務定位器模式(這是一種反模式,所以我不想使用它)
如果這是反模式,我的選擇是什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.