У меня есть проект WPF с Prism 7.1, Unity DI 5.8.11 и .NET framework 4.7
У меня есть BaseViewModel
, который все классы ViewModel унаследуют от
public abstract class BaseViewModel : BindableBase
{
[Dependency]
protected IEventAggregator EventAggregator { get; set; }
// just default constructor, no other constructor is needed
}
и вот пример одного из классов ViewModel
public class TablesViewModel : BaseViewModel
{
public TablesViewModel()
{
EventAggregator.GetEvent<OperatorChangedEvent>().Subscribe(.....);
}
}
и регистр типа как следующий
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterInstance<IEventAggregator>(new EventAggregator());
}
Теперь произошло следующее: сначала вызывается конструктор BaseViewModel
, затем конструктор TablesViewModel
, затем свойство Dependency задается Unity DI, это логическая последовательность событий, но это не подходит для меня.
конструктор TablesViewModel
дает исключительную ситуацию с нулевой ссылкой, поскольку свойство EventAggregator
по-прежнему равно нулю.
Я не хочу использовать внедрение зависимости конструктора, это заставит меня создать множество конструкторов не по умолчанию для всех классов ViewModel.
и в то же время мне нужно подписаться на EventAggregator
в конструкторе (потому что другого хорошего места для этого нет, если есть, пожалуйста, сообщите мне).
Как я могу решить это