我有一个使用依赖注入(inject)的 Controller :
public FeedController(IFeedProcessor feedProcessor)
{
_feedProcessor = feedProcessor;
}
这是我的配置代码:
public static void Config()
{
ObjectFactory.Initialize(x => x.Scan(scan =>
{
x.For<IFeedProcessor>().Use<FeedProcessor>();
}));
}
我的 FeedProcessor 类有参数构造函数:
public FeedProcessor(IFeedParserFactory ifeedParserFactory)
{
_ifeedParserFactory = ifeedParserFactory;
}
这个 StructureMapControllerFactory :
public class StructureMapControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
if (requestContext.HttpContext.Request.Url != null)
throw new InvalidOperationException(string.Format("Page not found: {0}", requestContext.HttpContext.Request.Url.AbsoluteUri.ToString(CultureInfo.InvariantCulture)));
return ObjectFactory.GetInstance(controllerType) as Controller;
}
}
我得到这个错误: 类型“Api.Controllers.FeedController”没有默认构造函数 我如何为这种情况配置结构图?
最佳答案
WebApi 不使用 DefaultControlFactory
来创建 Api Controller 的实例。相反,它使用 DefaultHttpControllerSelector
。但是,除非您有创建 Controller 工厂的特定原因,否则我会改用 MVC 中内置的 Dependency Resolver 系统。
http://buchanan1966.tumblr.com/post/2192279804/mvc3-using-dependencyresolver-with-structuremap
http://marisks.net/2012/08/19/configuring-structuremap-in-aspnet-webapi/
关于c# - 类型 'Api.Controllers.' 没有默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16124036/