Rub*_*ben 12 language-agnostic structuremap inversion-of-control
如何将参数传递给IOC框架中的构造函数?我想做类似的事情:(试图成为IOC框架不可知;))
object objectToLogFor = xxx;
container.Resolve<ILogging>(objectToLogFor);
public class MyLogging : ILogging
{
public MyLogging(object objectToLogFor){}
}
Run Code Online (Sandbox Code Playgroud)
看起来这在StructureMap中是不可能的.但我很乐意看到有人证明我错了.
其他框架是否功能更丰富?或者我是以错误的方式使用IOC框架?
在结构图中,您可以使用With方法实现此目的:
string objectToLogFor = "PolicyName";
ObjectFactory.With<string>(objectToLogFor).GetInstance<ILogging>();
Run Code Online (Sandbox Code Playgroud)
请参阅:http://codebetter.com/blogs/jeremy.miller/archive/2008/09/25/using-structuremap-2-5-to-inject-your-entity-objects-into-services.aspx
对于温莎城堡:
var foo = "foo";
var service = this.container.Resolve<TContract>(new { constructorArg1 = foo });
Run Code Online (Sandbox Code Playgroud)
请注意使用匿名对象来指定构造函数参数.
使用StructureMap:
var foo = "foo";
var service = container.With(foo).GetInstance<TContract>();
Run Code Online (Sandbox Code Playgroud)