2009-12-22 69 views
1

我得到一個錯誤:StructureMap錯誤202設置IOC容器

StructureMap異常代碼:202 爲PluginFamily MVCPoco.Services.IService,MVCPoco.Services,版本= 1.0.0.0,文化定義沒有默認實例=中性,在管線98

任何想法發生公鑰=空

Line 96:   { 
Line 97:    Type controllerType = base.GetControllerType(context, controllerName); 
Line 98:    return ObjectFactory.GetInstance(controllerType) as IController; 
Line 99:   } 
Line 100: } 

錯誤? 我正在使用Visual Studio 2010附帶的asp.net mvc 2 preview 2。

+0

私有靜態無效InitializeStructureMap(IInitializationExpression X) { x.Scan(Y => { ÿ .Assembly( 「MVCPoco.Core」); y.Assembly( 「MVCPoco.Data」); y.With (); }); 我正在使用該代碼來使用默認的名稱約定...... 也許我做錯了什麼。 – Diego 2009-12-22 13:19:17

+0

我使用SM 2.5.2 這些方法的NOE不存在於我的當前上下文 x.For ()。使用(); (新的SingleImplementationScanner()); – Diego 2009-12-22 14:14:54

回答

0

您必須在ObjectFactory.Configure函數內註冊在應用程序啓動時注入的類型。在Structure Map的網站上查看配置您的IOC容器的文檔。

安德魯

1

你試圖實例化控制器對IService構造函數依賴。您必須確保在配置StructureMap時註冊IService的具體實現。 DefaultConventionScanner只會註冊與其界面具有相同名稱的實現(不含領先的I)。所以,除非您的IService的實施被命名爲Service,否則它不會被自動註冊。要明確地註冊,添加這樣的事情你inititalization腳本:

x.For<IService>().Use<MyService>(); 

另外,如果你是從最新的源代碼運行StructureMap,你可以使用SingleImplementationScanner在您的掃描()的表達:

y.With(new SingleImplementationScanner()); 

,如果他們是在掃描碼接口的唯一實現,無論名稱會自動註冊的具體類型。

0

好,我已經設置了正確的structuremap我剛切換到方法

public static void Configure() 
     { 
      ObjectFactory.Initialize(x => 

      x.AddRegistry(new IOCRegistry())); // in here i have registered my dependencies with for method. 

     }