2017-10-16 4 views
1

Ich habe diese drei Schnittstellen:Mehrere Schnittstellen zu einer einzigen Klasse binded

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

Außerdem habe ich diese andere Schnittstelle, die von IA erbt, IB und IC:

interface II : IA, IB, IC {} 

Dann habe ich habe auch eine Klasse erstellt CC erbt von II:

Ich habe diese Bindungen erstellt:

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

Ich weiß nicht, ob ich jedes Mal habe für eine je nachdem, welche Schnittstelle zu beantragen, ist ninject Kernel die gleiche Singleton-Instanz von CC geben würde.

Also, ich meine:

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

ia ist die gleiche Instanz, dass ib?

Wie kann ich dieses Verhalten erhalten?

+0

Mögliche Duplikate von [Binding Singleton zu mehreren Diensten in Ninject] (https://Stackoverflow.com/questions/3147996/binding-singleton-to-multiple-services-in-ninject) – BatteryBackupUnit

+0

der Unterschied zu [Ihre Frage aus vor fast genau einem Jahr] (https://stackoverflow.com/questions/40125455/ninject-bind-multiple-types-to-the-same-singleton-instance) ist eine Minute. – BatteryBackupUnit

Antwort

2

Soweit ich weiß, sollte diese Arbeit:

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

Die Überlastung von Bind dauert vier Typparameter auf.

+2

Und wenn vier nicht genug ist, gibt es immer 'Bind (params Type [] services)'. –

Verwandte Themen