2012-06-27 4 views
7

Autofac consente di risolvere più interfacce sulla stessa istanza molto facilmente con le chiamate .AsImplementedInterfaces() o concatenate .As <>() insieme a .SingleInstance(). Questo può essere fatto anche con TinyIoC? Ho solo trovato come registrare più implementazioni della stessa interfaccia, ma non c'è modo di concatenare registrazioni o simili.TinyIoC: registrazione di più interfacce su una singola istanza

Dal mio punto di vista questa è una funzionalità abbastanza importante per un contenitore IoC, non è vero?

risposta

9

Se ho la comprensione correttamente avete qualcosa come

public class MyThing : IFoo, IBar 
{ 
} 

e si desidera il seguente per restituire la stessa istanza come l'altro:

Resolve<IFoo>(); 
Resolve<IBar>(); 

Se è così, è possibile, ma è un po 'brutto:

container.Register<IFoo, MyThing>(); 
container.Register<IBar>((c,p) => c.Resolve<IFoo>() as IBar); 

Si potrebbe probabilmente inserirlo in una sintassi più bella se si desidera, ma che fa delegato di ctory è effettivamente ciò che accadrà sotto il cofano.

+0

Grazie! Stavo cercando di trovare qualcosa di simile, ma non riuscivo a decidermi la scorsa notte. – TeaDrivenDev