mahtab
mahtab

Reputation: 1

Use IOC Container In ASP.NET Web Api 2

i use LightInject(Light weight IOC Container in C#) in ExirRobot.Infrastructure as a global IOC Container Project in my solutionExplorer(Picture Was Attached).I want to register Ioc Config Class(IOC.cs) in ExirRobot.WebApi project inorder to inject Service Layer Interfaces(such as IArticleService) into web api controllers,how can i do this?

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

Upvotes: 0

Views: 3731

Answers (1)

Michael
Michael

Reputation: 3641

You need to implement an IDependencyResolver for LightInject or you can use this NuGet package.

This is how you configure it into 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.
}

See also Dependency Injection in ASP.NET Web API 2.

Upvotes: 0

Related Questions