2011-09-15 96 views
0
var container = new Container(x => 
               { 
                x.For<IEngine>().Use<V6Engine>(); 
                x.For<ICar>().Use<HondaCar>(); 
               } 
); 

ICar car = ObjectFactory.GetInstance<ICar>(); 

Console.WriteLine(car.Noise()); 

我收到錯誤:幫助基本structuremap接線

StructureMap Exception Code: 202 
No Default Instance defined for PluginFamily ClassLibrary1.ICar, ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 

我讀了快速入門,我明白,如果你wireup一個特定的接口也設置在構造函數中使用,你不」不得不在每個類結構中明確地連接接口。所以在上面,我把IEngine連接到V6Engine,然後把ICar連接到HondaCar(它有一個構造函數,它有一個已經連接好的IEngine)。

爲什麼這不起作用?

回答

1

嘗試:

container.GetInstance<ICar>(); 

希望它能幫助。

+0

是的,這有效,但爲什麼?在Web應用程序中,objectfactory會起作用嗎?容器將不在包含容器配置代碼的文件以外的其他位置。 – codecompleting

+0

你使用的是asp.net mvc嗎? – alexl

+0

如果你想使用ObjectFactory使用ObjectFactory.Initialize(x => ...); – alexl