如何将参数传递给IOC框架中的构造函数

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框架?

Edw*_*lde 9

在结构图中,您可以使用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


Rem*_*Ros 5

对于温莎城堡:

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)