48 votes

Adopter des arguments du constructeur lors de l'utilisation de StructureMap

Je suis l'aide de StructureMap pour ma DI. Imaginez que j'ai une classe qui prend 1 argument comme:

public class ProductProvider : IProductProvider
{
     public ProductProvider(string connectionString)
     { 
         ....
     }
}

J'ai besoin de spécifier le "connectionString au moment de l'exécution , quand je reçois une instance de IProductProvider.

J'ai configuré le StructureMap comme suit:

ForRequestedType<IProductProvider>.TheDefault.Is.OfConcreteType<ProductProvider>().  
WithCtorArgument("connectionString");

Cependant, je ne veux pas l'appeler EqualTo("quelque chose...") la méthode ici que j'ai besoin de l'installation de manière dynamique spécifier cette valeur au moment de l'exécution.

Ma question est: comment puis-je obtenir une instance de IProductProvider en utilisant ObjectFactory?

Actuellement, j'ai quelque chose comme:

ObjectFactory.GetInstance<IProductProvider>();  

Mais comme vous le savez, cela ne fonctionne pas...

Tout conseil serait grandement apprécié.

63voto

Michael Hedgpeth Points 2474

Je suggère de déclarer cela avec la configuration StructureMap. Utilisation du code StructureMap légèrement plus récent :

De cette façon, vous n'avez pas de fardeau pour votre code client d'avoir à connaître la valeur et pouvez garder votre configuration IoC séparée de votre code principal.

36voto

Mosh Points 1436

J'ai trouvé la réponse moi-même! Voici la solution :

J'espère que cela aide d'autres personnes qui ont rencontré le même problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X