30

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

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

  • 我想每次都使用 kernel.Get 来获取处理器的实例。但是,每次我想为处理器使用的对象使用不同的值。请参阅图像中的 Action1 和 Action2。该代码不是真实的,仅用于此处的解释。

有没有现有的方式可以满足我的需求?Get时传参数

4

2 回答 2

42

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

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;
}
于 2012-05-30T17:56:09.217 回答
1

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

于 2012-06-01T01:31:32.893 回答