I'm using StructureMap for my DI. Imagine I have a class that takes 1 argument like:
public class ProductProvider : IProductProvider { public ProductProvider(string connectionString) { .... } }
I need to specify the "connectionString at run-time when I get an instance of IProductProvider.
I have configured StructureMap as follows:
ForRequestedType<IProductProvider>.TheDefault.Is.OfConcreteType<ProductProvider>(). WithCtorArgument("connectionString");
However, I don't want to call EqualTo("something...") method here as I need some facility to dynamically specify this value at run-time.
My question is: how can I get an instance of IProductProvider by using ObjectFactory?
Currently, I have something like:
ObjectFactory.GetInstance<IProductProvider>();
But as you know, this doesn't work...
Any advice would be greatly appreciated.
I suggest declaring that with the StructureMap configuration. Using the slightly newer StructureMap code:
For<IProductProvider>().Use<ProductProvider> .Ctor<string>("connectionString").Is(someValueAtRunTime);
This way you don't burden your client code from having to know the value and can keep your IoC configuration separate from your main code.
I found the answer myself! Here is the solution:
ObjectFactory.With("connectionString").EqualTo(someValueAtRunTime).GetInstance<IProductProvider>();
Hope this helps others who have come across the same issue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With