Где в Prism зарегистрированы типы? - PullRequest
0 голосов
/ 20 июля 2009

В решении Prism Commanding_Desktop QuickStart в OrderModule определяется переменная для следующего:

this.container.Resolve<OrdersEditorPresentationModel>()

но где это регистрируется, чтобы его можно было "разрешить" из контейнера? Я вижу ниже, где OrdersRepository регистрируется, но я не нахожу где в проект, в котором OrdersEditorPresentationModel регистрируется.

OrderModule.cs:

public void Initialize()
{
    this.container.RegisterType<IOrdersRepository, OrdersRepository>(new ContainerControlledLifetimeManager());

    OrdersEditorPresentationModel presentationModel = this.container.Resolve<OrdersEditorPresentationModel>();

    ...
}

OrdersEditorPresentationModel.cs:

public class OrdersEditorPresentationModel : INotifyPropertyChanged
{
    ...

    public OrdersEditorPresentationModel(OrdersEditorView view, IOrdersRepository ordersRepository, OrdersCommandProxy commandProxy)
    {
        this.ordersRepository = ordersRepository;
        this.commandProxy = commandProxy;
        this.Orders = new ObservableCollection<OrderPresentationModel>();
        this.PopulateOrders();

        this.View = view;
        view.Model = this;
    }

    ...

Конструктор в разрешаемом выше типе имеет особую подпись, но , где - это определяемая подпись:

public OrdersEditorPresentationModel(OrdersEditorView view, 
                    IOrdersRepository ordersRepository, 
                    OrdersCommandProxy commandProxy)

Я думаю, это может быть некоторая подпись по умолчанию, но в другом примере в документации Prism конструктор презентатора имеет другую подпись :

public EmployeesPresenter(IEmployeesView view, 
        IEmployeesListPresenter listPresenter,
        IEmployeesController employeeController)

1 Ответ

1 голос
/ 20 июля 2009

Этот тип не нужно нигде объявлять, потому что это конкретная реализация. Для интерфейсов, таких как IMyInterface, которые не могут быть созданы автоматически, вы должны заранее зарегистрировать конкретную реализацию, чтобы Контейнер знал, что создавать, когда объект имеет независимость типа IMyInterface.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...