Некоторые возможности:
Жесткие ссылки
Следующий подход решит проблему. Однако, поскольку он вводит жестко запрограммированные зависимости, об его использовании не может быть и речи.
// in the master view model
var detailViewModel = new DetailViewModel(new AccountService(), new TransactionService());
Разрешение через IoC Framework
Другим вариантом было бы, чтобы модель родительского представления содержала ссылку на структуру IoC. Этот подход вводит зависимость модели основного вида от фрейма IoC.
// in the master view model
var detailViewModel = new DetailViewModel(resolver.GetNew<IAccountService>(), resolver.GetNew<IAccountService>());
Factory Func <> s
class MasterViewModel {
public MasterViewModel(Func<Service.IAccountService> accountServiceFactory, Func<Service.ITransactionService> transactionServiceFactory) {
this.accountServiceFactory = accountServiceFactory;
this.transactionServiceFactory = transactionServiceFactory;
// instances for MasterViewModel's internal use
this.accountService = this.accountServiceFactory();
this.transactionService = this.transactionServiceFactory():
}
public SelectedItem {
set {
selectedItem = value;
DetailToEdit = new DetailViewModel(selectedItem.Id, accountServiceFactory(), transactionServiceFactory());
}
// ....