2011-07-19 114 views
0

我正在創建一個MVC3網站,該網站將使用WCF Web API公開REST API。如何在MVC3和WCF Web API中爲ServiceRoute啓用依賴注入

向REST API註冊路由我將代碼添加到與下面代碼類似的Global.asax中。

routes.MapServiceRoute<RelationsService>("relations"); 

這工作得不錯,但我需要使用DI方法來注入服務依賴的依賴關係。 正如您在上面的代碼中看到的,MVC框架正在創建RelationsService的實例,但這應該由DI容器完成。

有誰知道如何配置MVC3,以便我自己的DI容器用於創建服務的實例?

回答

1

您必須使用已使用IResourceFactory創建的IHttpHostConfigurationBuilder擴展當前的服務註冊調用。

var configurationBuilder = HttpHostConfiguration.Create() 
    .SetResourceFactory(new ResourceFactory()); 

routes.MapServiceRoute<RelationsService>("relations", configurationBuilder); 

這時如果例如使用StructureMap作爲首選的IoC/DI工具,你可以只要求在getInstance方法的服務。

public class ResourceFactory : IResourceFactory 
{ 
    public object GetInstance(Type serviceType, InstanceContext instanceContext, HttpRequestMessage request) 
    { 
     return ObjectFactory.GetInstance(serviceType); 
    } 
} 
+0

有使用同一個IoC用於SetResourceFactory爲SetMessageHandlerFactory和SetOperationHandlerFactory創建/決心依賴條件的方法嗎? – Crixo