我有这段代码。Ninject避免使用命名绑定
foreach(device into xmlfile)
{
var kdevice = kernel.Get(type, parameters.ToArray()) as IDevice;
devices.Add(kdevice);
kernel.Bind(type).ToConstant(kdevice).InSingletonScope().Named(kdevice.Name);
if (type.IsSubclassOf(typeof(BaseDevice)))
kernel.Bind<BaseDevice>().ToConstant(kdevice as BaseDevice).InSingletonScope().Named(kdevice.Name);
}
我的问题是,下一次迭代,Kernel.Get与第一绑定,就算我不要求命名的结合,所以它应该创建一个新对象解决。
我不能使用延迟最终绑定,因为其他设备可能有一个“refDevice”字符串参数,应该使用命名的绑定设备来解析。
我该怎么办?
你需要让路更多的上下文。你想做什么,为什么。给你一些你想要什么的样本。然后有人可以协助将其表达为Ninject'Bind'语句。现在,你在混合使用'绑定',这绝不是一个好主意,可以随时解决。 – 2013-05-01 19:55:58
我想注册多个实现我的接口名称的类,即使它们是相同的。 例 的iDevice - >为TestDevice名为 “D1” 的iDevice - > VirtualDevice名为 “D2” 的iDevice - > VirtualDevice命名为 “D3” 这样,我想用costructor注射,让他们在我的代码: void ctor([Named(“D3”)] IDevice mydev){} – Vincenzo 2013-05-02 06:03:18