问题描述
我使用StructureMap为我的DI。想象一下,我有一个类,需要1个参数,如:
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)
{
....
}
}
当我得到一个IProductProvider的实例时,我需要在运行时指定connectionString 。
I need to specify the "connectionString at run-time when I get an instance of IProductProvider.
配置的StructureMap如下:
I have configured StructureMap as follows:
ForRequestedType<IProductProvider>.TheDefault.Is.OfConcreteType<ProductProvider>().
WithCtorArgument("connectionString");
但是,我不想调用EqualTo 。)方法,因为我需要一些工具在运行时动态指定这个值。
However, I don't want to call EqualTo("something...") method here as I need some facility to dynamically specify this value at run-time.
我的问题是:如何使用ObjectFactory获取IProductProvider的实例?
My question is: how can I get an instance of IProductProvider by using ObjectFactory?
目前,我有类似:
ObjectFactory.GetInstance<IProductProvider>();
但是你知道,这不工作...
But as you know, this doesn't work...
任何建议将非常感谢。
Any advice would be greatly appreciated.
推荐答案
我自己找到答案!这里是解决方案:
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.
这篇关于在使用StructureMap时传递构造函数参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!