2017-10-16 11 views
1

j'ai ces 3 interfaces:interfaces multiples binded à une seule classe

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

, j'ai aussi cette autre interface qui hérite de IA, IB et IC:

interface II : IA, IB, IC {} 

Ensuite, je 'ai également créé une classe CC hérite de II:

class CC : II {} 

J'ai créé ces liaisons:

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

Je ne sais pas si, chaque fois que je l'ai à demander un selon l'interface, le noyau ninject va donner la même instance singleton de CC.

Alors, je veux dire:

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

ia est la même instance que ib?

Comment pourrais-je avoir ce comportement?

+0

Possible duplication de [Liaison singleton à plusieurs services dans Ninject] (https://stackoverflow.com/questions/3147996/binding-singleton-to-multiple-services-in-ninject) – BatteryBackupUnit

+0

la différence à [votre question de Il ya presque exactement un an] (https://stackoverflow.com/questions/40125455/ninject-bind-multiple-types-to-the-same-singleton-instance) est minute. – BatteryBackupUnit

Répondre

2

Pour autant que je sache, cela devrait fonctionner:

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

La surcharge de Bind prend jusqu'à quatre paramètres de type.

+2

Et si quatre ne suffisent pas, il y a toujours 'Bind (params Type [] services)'. –