c# - 类型 'Api.Controllers.' 没有默认构造函数

标签 c# asp.net-mvc dependency-injection asp.net-web-api

我有一个使用依赖注入(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/

相关文章:

c# - 如何使生成的 EXE 适用于所有 .NET Framework 版本?

c# 我可以防止我的构造函数参数与 VBA 实例化冲突吗?

asp.net - ASP.NET MVC 中的简单、硬编码授权,无需复杂的提供程序和数据库

来自另一个类的 Java Spring Boot FTPClient 连接方法不起作用

c# - 需要在值类型的对象中使用随机数生成器但不希望其依赖的负担

c# - 从文件路径获取字符串而不是路径格式

c# - 正则表达式:使用通配符根据用户输入检查 IP 地址

c# - 自定义 WebViewPage 在渲染 Razor 模板时注入(inject)代码

c# - 使用 Ninject 时如何模拟通用 Get 方法并使用 SetUp 方法填充模拟数据库?

c# - 模型类中的 EF 上下文