使用StructureMap时传递构造函数参数

我正在为我的DI使用StructureMap。 想象一下,我有一个类需要1个参数,如:

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

当我得到一个IProductProvider的实例时,我需要在运行时指定“connectionString”。

我已经configuration了StructureMap,如下所示:

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

不过,我不想在这里调用EqualTo(“something …”)方法,因为我需要一些工具来在运行时dynamic指定这个值。

我的问题是:如何通过使用ObjectFactory获得IProductProvider的实例?

目前,我有这样的东西:

 ObjectFactory.GetInstance<IProductProvider>(); 

但是,如你所知,这是行不通的…

任何build议将不胜感激。

我build议用StructureMapconfiguration声明。 使用稍微更新的StructureMap代码:

 For<IProductProvider>().Use<ProductProvider> .Ctor<string>("connectionString").Is(someValueAtRunTime); 

通过这种方式,您不必担心客户端代码不必知道该值,并可以将IoCconfiguration与主代码分开。

我自己find了答案! 这是解决scheme:

 ObjectFactory.With("connectionString").EqualTo(someValueAtRunTime).GetInstance<IProductProvider>(); 

希望这可以帮助那些遇到同样问题的人。