MVC 4和Unity,向Web API控制器注入依赖项

时间:2012-11-04 21:35:05

标签: dependency-injection controller asp.net-mvc-4 asp.net-web-api unity-container

我是MVC的新手,我遇到了问题。我设法找到的所有示例都指的是简单的控制器而不是API控制器。也许任何人都有一个工作代码示例,如何在Application_Start()上向Unity注册依赖项并调整代码,以便在创建apicontroller类之后,将正确的依赖项传递给它。让我们说这是我的控制器的定义:

public class BookController : ApiController
{
    private IBookService bookSerivce;

    public BookController (IBookService bookSerivce)
    {
        this.bookSerivce= bookSerivce;
    }
}

我期望以下列方式将其注册为统一:

UnityContainer container = new UnityContainer();

// Register services
container.RegisterType<IBookService , BookService>();

// Register controllers
container.RegisterType<IHttpController, BookController>("Books");

现在,我需要做些什么才能让MVC使用unity来解析依赖关系,开始创建这个控制器的实例并将依赖关系传递给它?

我正在使用MVC 4.我们将不胜感激。

干杯

2 个答案:

答案 0 :(得分:6)

Mark Seemann在WebAPI上有两篇关于依赖注入的帖子。

Dependency Injection and Lifetime Management with ASP.NET Web API

Dependency Injection in ASP.NET Web API with Castle Windsor

如果用Unity替换Castle Windsor,样本应该可以正常工作。

答案 1 :(得分:1)

看起来您正在使用WebAPI。查看有关ASP.NET WebAPI中Unity集成的这篇文章:

Introducing the Unity.WebAPI NuGet Package