我有這段代碼。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