NInject:Get <T>()时如何传递参数?

Zac*_*ach 27 ninject

我正在使用附加的图像来解释我的意思.

  • 我有一些由NInject管理的课程.其中一些具有一些单例实例,而另一些则处于瞬态范围.在图像中,蓝色矩形是单色,红色是瞬态的.处理器依赖于其他类或实例.

  • 我希望每次都使用kernel.Get来获取Processor的实例.但是,每次我想为处理器使用的对象使用不同的值.请参见图像中的Action1和Action2.代码不是真实的,只是为了解释.

有没有现成的方法可以满足我的需求?获取时传递参数

Jer*_*ang 40

您应该能够传递构造函数参数,因为您的处理器将这些依赖项作为构造函数中的参数.

var foo = new Ninject.Parameters.ConstructorArgument("foo", new Foo());
var bar = new Ninject.Parameters.ConstructorArgument("bar", new Bar());
var processor = kernel.Get<IProcessor>(foo, bar);

public Processor (Foo foo, Bar bar){
    this.foo = foo;
    this.bar = bar;
}
Run Code Online (Sandbox Code Playgroud)