0

我在ExExRobot.Infrastructure中使用LightInject(C#中的輕量級IOC容器)作爲我的solutionExplorer中的全局IOC容器項目(圖片已連接)。我想註冊Ioc Config Class (IOC.cs)在ExirRobot.WebApi項目中將服務層接口(如IArticleService)注入web api控制器,我該怎麼做?在ASP.NET Web Api中使用IOC容器2

IOC.cs:

public class IOC{ 

    public static void Initialize() 
    { 
     var container = new LightInject.ServiceContainer();    
     //Engin Dependency Wiring 
     container.Register<ISISearchResult, ISIContentProvider>(new PerRequestLifeTime()); 
     container.Register<ISearchArticleEngine, ISIEngineManager>(new PerRequestLifeTime()); 

     //Repository Dependency Wiring 
     container.Register<IArticleRepository, ArticleRepository>(new PerRequestLifeTime()); 
     container.Register<IAuthorRepository, AuthorRepository>(new PerRequestLifeTime()); 
     container.Register<IIsiArticleDetailRepository, IsiArticleDetailRepository>(new PerRequestLifeTime()); 
     container.Register<IJournalRepository, JournalRepository>(new PerRequestLifeTime()); 
     container.Register<IVendorRepository, VendorRepository>(new PerRequestLifeTime()); 

     //Service Dependency Wiring 
     container.Register<IArticleService, ArticleService>(new PerRequestLifeTime()); 
     container.Register<IAuthorService, AuthorService>(new PerRequestLifeTime()); 
     container.Register<IIsiArticleDetailService, IsiArticleDetailService>(new PerRequestLifeTime()); 
     container.Register<IJournalService, JournalService>(new PerRequestLifeTime()); 
     container.Register<IVendorService, VendorService>(new PerRequestLifeTime()); 
} 
} 

enter image description here

+0

請將相關代碼作爲文本發佈到問題中,而不是鏈接圖片。 –

+0

我作爲文本發佈代碼 – mahtab

回答

0

您需要實現LightInject一個的IDependencyResolver或者您可以使用此NuGet package

這是你如何配置它轉換爲Web API:

public static void Register(HttpConfiguration config) 
{ 
    var container = new UnityContainer(); 
    container.RegisterType<IProductRepository, ProductRepository>(new HierarchicalLifetimeManager()); 
    config.DependencyResolver = new UnityResolver(container); 

    // Other Web API configuration not shown. 
} 

又見Dependency Injection in ASP.NET Web API 2

+0

我沒有IDependencyResolver實現LightInject現在,我在Exocrobot.Infrastructure項目中IOC.cs類中的連接依賴關係,我需要通過註冊調用Web API中的IOC.cs的Initialize方法( HttpConfiguration配置)方法,以防止在Register方法中額外的佈線。在我的應用程序的生命週期中,我有一個IOC容器,我想在Web Api項目中使用它。 – mahtab

+0

不確定你的意思,但爲了讓DI能夠使用ASP.NET Web API,你需要使用'IDependencyResolver'或'IHttpControllerFactory'。有關該主題,請參閱Mark Seemann的[post](http://blog.ploeh.dk/2012/09/28/DependencyInjectionandLifetimeManagementwithASP.NETWebAPI/)。所以你的IOC類可能沒問題,但是你需要一個IDependencyResolver實現來連接ASP.NET Web API。 – Michael