我正在使用StructureMap作为我的DI。想象一下,我有一个类,需要1个参数,如:使用StructureMap时传递构造函数参数
public class ProductProvider : IProductProvider
{
public ProductProvider(string connectionString)
{
....
}
}
我需要指定“的ConnectionString 在运行时当我得到IProductProvider的实例
我已经配置StructureMap如下:
ForRequestedType<IProductProvider>.TheDefault.Is.OfConcreteType<ProductProvider>().
WithCtorArgument("connectionString");
不过,我不想叫EqualTo(“什么......”)方法,这里我需要一些工具来动态指定在运行时该值。
我的问题是:如何通过使用ObjectFactory获取IProductProvider的实例?
目前,我有这样的:
ObjectFactory.GetInstance<IProductProvider>();
但你也知道,这是行不通......
任何意见将不胜感激。
确保someValueAtRuntime是一个简单的值,而不是任何类型的Func或Lambda(如果可以这样做)检索它,否则该函数将在每次解析依赖项时运行。我用这个技巧来注入连接字符串,就像你在做什么一样。只要你在设置ObjectFactory之前将字符串转换成本地变量,你应该没问题。 – Mel 2011-08-09 11:59:12
呦。如果我有几个参数,arg1,2,3等,我该如何传递每个参数,但将其中一个参数保留为空。这个怎么做? – 2013-02-21 15:31:54
@Mosh谢谢你的回答,你怎么能告诉我你如何通过someValueAtRuneTime?它的一个例子请。 – wandos 2017-03-30 06:43:34