【发布时间】:2015-04-21 05:23:05
【问题描述】:
我一直在阅读有关依赖注入的内容,我从中了解到的是,您基本上只是将实例从顶部的 1 个位置(例如 App.xml.cs 向下传递到 View、ViewModel 和 ViewModel 使用的类)等等。
希望正确理解这一点,我开始尝试实现这一点。
我有一个类Localizer : ILocalizer,其构造函数如下:
Localizer(ResourceDictionary appResDic,
string projectName,
string languagesDirectoryName,
string fileBaseName,
string fallbackLanguage)
我还有一个 ExceptionHandler : IExceptionHandler 使用这个类,所以我的构造函数看起来像这样:
ExceptionHandler(ILocalizer localizer,
string logLocation)
现在是 ViewModel。 ViewModel 同时使用Localizer 和ExceptionHandler,所以我的承包商看起来像这样:
MainWindowViewModel(IExceptionHandler exceptionHandler,
ILocalizer localizer)
在此之前,我的 View 将在使用以下构造函数调用时实例化 ViewModel。
public MainWindowView(IExceptionHandler exceptionHandler, ILocalizer localizer)
{
InitializeComponent();
MainWindowViewModel viewModel = new MainWindowViewModel(exceptionHandler , localizer);
this.DataContext = viewModel;
}
这就是我卡住的地方。我遇到了以下异常:
'在类型'Noru.Test.Views.MainWindowView'上找不到匹配的构造函数。您可以使用 Arguments 或 FactoryMethod 指令来构造此类型。行号“3”和行位置“9”。
还有内部异常:
找不到类型“Noru.Test.Views.MainWindowView”的默认构造函数。您可以使用 Arguments 或 FactoryMethod 指令来构造此类型。
【问题讨论】:
-
您对问题的一系列更新让我感到困惑。我在下面的回答是否帮助您解决了问题?
-
确实如此,我不得不将我的问题恢复到原来的问题,因为我是在推导。我刚刚编辑了
protected override void OnStartup(StartupEventArgs e)并在那里添加了我的代码,这与我假设的大致相同。
标签: c# wpf mvvm dependency-injection