2010-03-29 6 views
7

Domanda newbie StructureMap.StructureMap: come registrare la stessa istanza per tutte le sue interfacce

public class SomeClass: IInterface1, IInterface2 { 
} 

Vorrei il seguente test per passare:

Assert.AreSameInstance(
    container.GetInstance<IInterface1>(), 
    container.GetInstance<IInterface2>()); 

Come farei una registrazione esplicita di questo?

So che nel Castello di Windsor vorrei fare qualcosa di simile

kernel.Register(Component.For(typeof(IInterface1), typeof(IInterface2)) 
    .ImplementedBy(typeof(SomeClass)); 

Ma non vedo alcuna API equivalente

+1

Stick a Windsor :) –

+0

Non basta dire a istanziarli come un Singleton? – Jaxidian

+0

Beh ... sì, ma come ottenere la stessa istanza singleton per implementare ogni interfaccia? Per essere chiari, solo un'istanza di SomeClass dovrebbe mai essere istanziata. –

risposta

15
ObjectFactory.Initialize(x => 
{ 
    x.For<IInterface1>().Singleton().Use<MyClass>(); 
    x.Forward<IInterface1, IInterface2>(); 
}); 
+0

Fantastico grazie Phil! –

+0

Suggerimento: se questo non funziona, assicurati di avere i due parametri di tipo su Forward() nel modo giusto. Sono stato sorpreso dal presupposto che fosse il tipo di plugin "alternativo" prima. – Schneider

Problemi correlati