2009-07-20 7 views
0

Dans la solution Prism Commanding_Desktop QuickStart , dans le OrderModule, il définit une variable à ce qui suit:Où sont les types enregistrés dans Prism?

this.container.Resolve<OrdersEditorPresentationModel>() 

mais où est-ce en cours d'enregistrement afin qu'il puisse être « résolu » du récipient? Je vois ci-dessous où OrdersRepository est en cours d'enregistrement, mais je ne trouve nulle part dans le projet où OrdersEditorPresentationModel est en cours d'enregistrement.

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; 
    } 

    ... 

Le constructeur du type étant résolu ci-dessus a une signature particulière, mais est cette signature en cours de définition:

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

Je pense que ce pourrait être une signature par défaut, mais un autre exemple dans la documentation Prism, un constructeur de présentateur a une signature différente: Ce type n'a pas

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

Répondre

1

être déclarée nulle parce que c'est une implémentation concrète. Pour les interfaces, comme dire IMyInterface, qui ne peuvent pas être instanciées automatiquement, vous devez d'abord enregistrer une implémentation concrète afin que le conteneur sache quoi instancier quand un objet a une dépendance de type IMyInterface.

Questions connexes