我有一个带参数化构造函数的ApiController。 我读过它可能是框架使用依赖注入来创建控制器。Web API:使用DI创建ApiController
所以我不会这样(像这里解释http://code.google.com/p/autofac/wiki/MvcIntegration):
的Global.asax
builder.RegisterControllers(Assembly.GetExecutingAssembly());
//or this
builder.RegisterType<ObjectsController>().InstancePerHttpRequest();
控制器看起来是这样的:
public class ObjectsController : ApiController
{
IMyObject m_myObject = null;
public ObjectsController(IMyObject obj)
{
m_myObject = obj;
}
}
的Global.asax 要解决我使用这个依赖项:
builder.Register<IMyObject >((c, p) =>
{
//... create object ...
return obj;
}).InstancePerHttpRequest();
但我得到这个错误:
"ObjectsController' does not have a default constructor.
我想用DI
相关:http://stackoverflow.com/questions/11254292/does-simple-injector-supports-mvc-4-asp-net-web-api。这个问题是关于不同的DI容器,但解决方案是(大约)相同。或者看看[这篇博客文章](http://alexmg.com/post/2012/03/08/Autofac-ASPNET-Web-API-%28Beta%29-Integration.aspx)。 – Steven 2012-07-12 18:14:15