2010-03-29 14 views
7

StructureMap newbie question.StructureMap: Tüm arabirimleri için aynı örneği nasıl kaydedebilirim?

public class SomeClass: IInterface1, IInterface2 { 
} 

Ben Aşağıdaki test geçmek istiyorum:

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

Bu sorun nasıl açık bir kaydını yapardınız?

ben Kale Windsor ben

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

gibi bir şey yapacağını biliyorum Ama Windsor herhangi eşdeğer API

+1

Çubuk görmüyorum :) –

+0

sadece bunu söylemek olmaz onları bir Singleton olarak mı tanımlarsın? – Jaxidian

+0

Şey ... evet, ama her arabirimi uygulamak için aynı tekil örnek nasıl alınır? Açık olmak gerekirse, sadece bir SomeClass örneği hiç örneklenmemelidir. –

cevap

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

Harika teşekkürler Phil! –

+0

İpucu: Bu sizin için çalışmıyorsa, Forward() öğesinin iki tür parametresine sahip olduğunuzdan emin olun. İlk önce "alternatif" eklenti türü olduğunu varsayarak yakalandım. – Schneider

İlgili konular