Mos*_*osh 40 structuremap constructor dependency-injection
我在我的DI中使用StructureMap.想象一下,我有一个类需要1个参数:
public class ProductProvider : IProductProvider
{
public ProductProvider(string connectionString)
{
....
}
}
Run Code Online (Sandbox Code Playgroud)
当我得到IProductProvider的实例时,我需要在运行时指定"connectionString" .
我已经按如下方式配置了StructureMap:
ForRequestedType<IProductProvider>.TheDefault.Is.OfConcreteType<ProductProvider>().
WithCtorArgument("connectionString");
Run Code Online (Sandbox Code Playgroud)
但是,我不想在这里调用EqualTo("something ......")方法,因为我需要一些工具来在运行时动态指定此值.
我的问题是:如何通过使用ObjectFactory获取IProductProvider的实例?
目前,我有类似的东西:
ObjectFactory.GetInstance<IProductProvider>();
Run Code Online (Sandbox Code Playgroud)
但是如你所知,这不起作用......
任何建议将不胜感激.
Mic*_*eth 54
我建议使用StructureMap配置声明.使用稍微更新的StructureMap代码:
For<IProductProvider>().Use<ProductProvider>
.Ctor<string>("connectionString").Is(someValueAtRunTime);
Run Code Online (Sandbox Code Playgroud)
这样,您不必担心客户端代码必须知道该值,并且可以使您的IoC配置与主代码分开.
Mos*_*osh 32
我自己找到了答案!这是解决方案:
ObjectFactory.With("connectionString").EqualTo(someValueAtRunTime).GetInstance<IProductProvider>();
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助遇到同样问题的其他人.
| 归档时间: |
|
| 查看次数: |
19722 次 |
| 最近记录: |