我正在学习 Caliburn Micro 并尝试使用EventAggregator
来自官方网站的。
但是,我有一个例外
“没有为此对象定义无参数构造函数。”
消息本身很清楚,但该示例也不包含无参数构造函数。如果我添加一个,带有参数的构造函数不会被命中,并且IEventAggregator
仍然没有正确注入。
这是我添加无参数构造函数后的发布者 VM(没有它,将引发异常):
public MainViewModel() { }
public MainViewModel(IEventAggregator ea) : this()
{
eventAggregator = ea;
}
这是我正在使用的引导程序:
public class AppBootstrapper : Bootstrapper<MainViewModel>
{
private readonly SimpleContainer container = new SimpleContainer();
protected override void Configure()
{
container.Singleton<IEventAggregator, EventAggregator>();
}
}
以下是 CM 的示例:
// Creating the EventAggregator as a singleton.
public class Bootstrapper : BootstrapperBase {
private readonly SimpleContainer _container =
new SimpleContainer();
// ... Other Bootstrapper Config
protected override void Configure(){
_container.Singleton<IEventAggregator, EventAggregator>();
}
// ... Other Bootstrapper Config
}
// Acquiring the EventAggregator in a viewModel.
public class FooViewModel {
private readonly IEventAggregator _eventAggregator;
public FooViewModel(IEventAggregator eventAggregator) {
_eventAggregator = eventAggregator;
}
}
我检查了这篇文章(Inject EventAggregator into ViewModel with Caliburn Micro),但它只是没有说明为什么 CM 不使用注入调用构造函数。
我还检查了 CM 的示例解决方案,但它使用 MEF 作为 DI 解决方案。
我想念什么?