WPF Prism.Unity - как создать ViewModel, используя именованное внедрение зависимости - PullRequest
1 голос
/ 28 июня 2019

Используя Prism 7.1, я могу зарегистрировать две именованные зависимости:

containerRegistry.Register<ICustomersService, CustomersFakeService>("One");
containerRegistry.Register<ICustomersService, CustomersFakeService>("Two");

Теперь - как я могу использовать любую из них в ViewModel конструкторе?

public CustomersViewModel(ICustomersService customersService, EventAggregator eventAggregator)

throwsисключение:

Не удалось разрешить зависимость, введите = 'WPFPrismDI.ViewModels.CustomersViewModel', name = '(none)'.Исключение произошло во время: при разрешении.Исключение: InvalidOperationException - Текущий тип, WPFPrismDI.Services.ICustomersService, является интерфейсом и не может быть создан.Вам не хватает отображения типов?----------------------------------------------- В это времяИсключением является контейнер: Resolving WPFPrismDI.ViewModels.CustomersViewModel, (нет) Параметр Resolving «CustomersService» конструктора WPFPrismDI.ViewModels.CustomersViewModel (WPFPrismDI.Services.ICustomersService, событие WPS.Pervice.ICustomersService, (нет)

Моя реализация услуги:

public interface ICustomersService
{
    ObservableCollection<CustomerModel> CustomerGetAll();
}

public class CustomersDBService : ICustomersService
{
    public ObservableCollection<CustomerModel> CustomerGetAll()
    {
        ObservableCollection<CustomerModel> returnValue = new ObservableCollection<CustomerModel>();

        returnValue.Add(new CustomerModel() { NameFirst = "DB", });

        return returnValue;
    }
}

1 Ответ

1 голос
/ 29 июня 2019

Теперь - как я могу использовать любой из них в CustomersViewModel конструкторе?

Путем введения всех из них:

public CustomersViewModel(ICustomersService[] customersServices, IEventAggregator eventAggregator)
...