我需要添加一个IVehicle类型的项目,它在运行时从构造函数注入到for循环。
IVehicle vehicle;
for (int i=0;i<=someValue;i++)
{
list.insert(i,vehicle);
//some processing to assign values
}
现在因为Ivehicle已经注入了这个时间,我的列表具有相同的值,尽管视图上的值不同并通过控制器。我怎样才能每次新建这个对象
修改
每次发现时,新建这个对象的最好方法是从注入它的内核请求new。我正在使用Ninject,如前所述。
我所做的只是使用创建一个类型为IKernel的变量并让构造函数注入它然后我使用kernel.Get()来获取一个新实例。不知道这是否是最好的方法,因为我的构造函数真的很贪心。 :)
private IKernel _kernel;
将这个注入到构造函数中,不需要做任何绑定,因为Ninject已经知道了这一点。
然后你可以使用_kernel.Get&lt;&gt;()来使用_kernel来获取新内容。
希望这有助于某人..
答案 0 :(得分:2)
此方案的最佳方法是注入Func<IVehicle>
。并在下面添加绑定。这样你就不会在生产代码中引用Ninject了。此外,这种工厂方法计划被添加到Ninject的下一个版本中。下面的绑定将不再是必要的。
Bind<Func<IConfigurationView>>().ToMethod(ctx => (() => ctx.Kernel.Get<IConfigurationView>()));