J'utilise StructureMap pour mon DI. Imaginez que j'ai une classe qui prend 1 argument comme:Passage d'arguments constructeur lors de l'utilisation de StructureMap
public class ProductProvider : IProductProvider
{
public ProductProvider(string connectionString)
{
....
}
}
je dois spécifier le « connectionString lors de l'exécution quand je reçois une instance de IProductProvider
J'ai configuré StructureMap comme suit.:
ForRequestedType<IProductProvider>.TheDefault.Is.OfConcreteType<ProductProvider>().
WithCtorArgument("connectionString");
Cependant, je ne veux pas appeler la méthode EqualTo (« quelque chose ... ») ici comme je l'ai besoin d'installation pour indiquer dynamiquement cette valeur lors 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é.
Assurez-vous que someValueAtRuntime est une valeur simple, pas n'importe quel type de Func ou Lambda (si vous pouvez le faire) pour le récupérer, sinon cette fonction s'exécutera chaque fois que la dépendance est résolue. J'ai utilisé cette astuce pour injecter une chaîne de connexion, tout comme vous le faites. Tant que vous placez la chaîne dans une variable locale avant de configurer ObjectFactory, cela devrait fonctionner. – Mel
Yo. Que faire si j'ai plusieurs arguments, arg1, 2, 3 etc. Et je veux passer dans chaque argument tel quel mais garder l'un des arguments comme nul. Comment faire ça? –
@Mosh merci pour la réponse, comment pouvez-vous s'il vous plaît dites-moi comment passez-vous someValueAtRuneTime? un exemple de cela s'il vous plaît. – wandos