2010-03-29 98 views
7

StructureMap新手問題。StructureMap:如何爲其所有接口註冊同一個實例

public class SomeClass: IInterface1, IInterface2 { 
} 

我想下面的測試通過:

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

我會怎麼做這方面的一個顯式註冊?

我知道在溫莎城堡我會做類似

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

但我看不出有任何等價API

+1

棒溫莎:) – 2010-03-30 14:49:05

+0

難道你只要告訴它將它們實例化爲一個Singleton? – Jaxidian 2010-03-29 00:43:31

+0

嗯...是的,但如何獲得相同的單例實例來實現每個接口?要清楚,只有一個SomeClass實例應該被實例化。 – 2010-03-29 00:46:00

回答

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

非常感謝菲爾! – 2010-03-29 01:45:21

+0

提示:如果這不起作用,請確保您有兩個類型參數以Forward()正確的方式。我首先假設它是「備用」插件類型。 – Schneider 2014-02-20 00:36:21

相關問題