Domanda

E 'iniezione modello al volo possibile? In altre parole, se chiedo per un modello di tipo IPhotoModel, dovrei ottenere una delle sue implementazioni in base allo stato corrente della vista. Se sto guardando una pagina utente, dovrei ottenere un'implementazione user-specifica di quel modello. Se sto guardando un LocationPage, dovrei ottenere un'implementazione specifica-posizione.

Al momento, l'unico modo che vedo è l'introduzione di un comando che specifica la mappatura modello, con uno concreto in base alla visualizzazione corrente dello stato ...

qualcosa di simile ...

injector.mapValue (IPhotoViewModel, injector.getInstance (UserPhotoViewModel)) o injector.mapValue (IPhotoViewModel, injector.getInstance (LocationPhotoViewModel))

E 'questo il miglior modo possibile? Non voglio davvero introdurre molto accoppiamento logico al di fuori del contesto, ma ...

È stato utile?

Soluzione

Ecco come lo faccio, e credo che questo è il metodo consigliato. In realtà, credo che molti utenti RobotLegs avanzati si romperà la maggior parte delle mappature in comandi per comodità, il riutilizzo, e per rendere più facile la lettura del programma - anche se il comando viene eseguito solo una volta in fase di avvio. L'ho usato per cose come sostituendo servizi finte per i servizi reali -. Il comando che mappa le dipendenze è diverso, ma tutto il resto è la stessa

Non vedo questo come "più di tanto" accoppiamento logico. Il comando è semplicemente installando il programma in base alla corrente dello stato di applicazione. Non c'è davvero molta differenza tra l'utilizzo di un comando per modificare lo stato iniettore vs il proprio stato di modello personalizzato.

Si può anche scoprire che è possibile riutilizzare l'iniezione Comandi di mapping tra le applicazioni, mentre si potrebbe non essere in grado di riutilizzare l'intero contesto.

HTH;

Amy

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top