我正在使用附图来解释我的意思。
我有几个由 NInject 管理的课程。其中一些有一些单例实例,而另一些则在瞬态范围内。在图像中,蓝色矩形是单例,红色是瞬态。处理器依赖于其他类或实例。
我想每次都使用 kernel.Get 来获取处理器的实例。但是,每次我想为处理器使用的对象使用不同的值。请参阅图像中的 Action1 和 Action2。该代码不是真实的,仅用于此处的解释。
有没有现有的方式可以满足我的需求?
我正在使用附图来解释我的意思。
我有几个由 NInject 管理的课程。其中一些有一些单例实例,而另一些则在瞬态范围内。在图像中,蓝色矩形是单例,红色是瞬态。处理器依赖于其他类或实例。
我想每次都使用 kernel.Get 来获取处理器的实例。但是,每次我想为处理器使用的对象使用不同的值。请参阅图像中的 Action1 和 Action2。该代码不是真实的,仅用于此处的解释。
有没有现有的方式可以满足我的需求?
鉴于您的处理器将这些依赖项作为构造函数中的参数,您应该能够传递构造函数参数。
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;
}
使用 OnActivation() 函数可以在激活依赖项时挂钩事件。