2010-07-23 7 views

Répondre

1

Vous devez d'abord répondre à la question "quand est-ce que je veux RepositoryCustomerA au lieu de RepositoryCustomerB?"

Si l'une de ces classes pouvait être instanciée en production en fonction d'un état d'exécution, vous souhaiterez probablement rechercher conditional object construction. Si RepositoryCustomerA doit être instancié au moment du développement (pour les tests unitaires, par exemple) alors que RepositoryCustomerB est l'analogue de production, vous avez besoin de deux Registry distincts: un qui n'existe que dans votre code de test et un qui est accessible en production . Pour plus d'informations sur cette route, consultez le document creating registries pour configurer StructureMap.

+0

les deux variantes semblent utiliser des chaînes. Est-il possible d'avoir ceci d'une manière typée? – Rookian

+0

J'ai regardé le tutoriel de construction d'un objet conditionnel, mais les méthodes qui y étaient utilisées sont presque toutes obsolètes ... existe-t-il une version actuelle pour cela? J'utilise StructureMap 2.6.1.0 – Rookian

+0

@Rookian: mes excuses pour avoir manqué vos commentaires jusqu'à maintenant. [Cette réponse] (http://stackoverflow.com/questions/2425565/structuremap-howto-conditional-construction-on-deep-object) pourrait vous aider à éviter les constructions conditionnelles non-safe. Les registres supportent les chaînes, mais elles ne sont pas obligatoires dans tous les cas - cela dépend uniquement de la quantité de détails dont vous avez besoin dans votre construction. Juste construire un référentiel ou l'autre sonne comme si cela pouvait être fait de manière sécurisée. – ladenedge