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

时间:2012-05-30 02:49:35

标签: ninject

我正在使用附图解释我的意思。

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

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

是否有任何现有方法可以满足我的需求?Pass parameters when Get

2 个答案:

答案 0 :(得分:37)

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

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;
}

答案 1 :(得分:0)

使用OnActivation()函数可以在激活依赖项时挂钩事件。