Я изучаю 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 в ViewModel с Caliburn Micro), но он просто ничего не сказал, почему CM не вызывает конструктор с инъекцией.
Я также проверил решение выборки CM, но использует MEF в качестве решения DI.
Что мне не хватает?