2017-10-16 93 views
1

我有這3個接口:綁定到一個類多個接口

interface IA {} 
interface IB {} 
interface IC {} 

另外,我這等接口,從IAIBIC繼承:

interface II : IA, IB, IC {} 

然後,我也創建了一個類CC繼承自II

class CC : II {} 

我創建這些綁定:

this.Bind<IA>().To<CC>().InSingletonScope(); 
this.Bind<IB>().To<CC>().InSingletonScope(); 
this.Bind<IC>().To<CC>().InSingletonScope(); 
this.Bind<II>().To<CC>().InSingletonScope(); 

我不知道,每次我已經請求了哪個接口時間,NInject內核是要給的CC同一單一實例。

所以,我的意思是:

IA ia = kernel.Get<IA>(); 
IB ib = kernel.Get<IB>(); 

ia是相同的實例ib

我怎麼能得到這種行爲?

+0

[在Ninject中綁定單個服務到多個服務]可能的重複(https://stackoverflow.com/questions/3147996/binding-singleton-to-multiple-services-in-ninject) – BatteryBackupUnit

+0

區別於[你的問題來自幾乎整整一年前](https://stackoverflow.com/questions/40125455/ninject-bind-multiple-types-to-the-same-singleton-instance)是分鐘。 – BatteryBackupUnit

回答

2

據我所知,這應該工作:

this.Bind<IA, IB, IC, II>().To<CC>().InSingletonScope(); 

Bind超載需要多達四個類型參數。

+2

如果四個不夠,總會有'Bind(params Type []服務)''。 –