【问题标题】:Dependecy injection for HttpConfiguration in Simple InjectorSimple Injector 中 HttpConfiguration 的依赖注入
【发布时间】:2017-06-18 02:31:15
【问题描述】:

我的HelpController 出现错误:

HelpController 类型的构造函数包含参数 名称 'config' 并键入未注册的 HttpConfiguration。 请确保 HttpConfiguration 已注册,或更改 HelpController 的构造函数。

由于我使用Configuration 来获取Configuration.GetModelDescriptionGenerator();,因此是否有其他方法可以解决此问题

public class HelpController : Controller
{
    private const string ErrorViewName = "Error";

    public HelpController(HttpConfiguration config)
    {
        Configuration = config;
    }

    public HttpConfiguration Configuration { get; private set; }

    ...

    public ActionResult ResourceModel(string modelName)
    {
        if (!String.IsNullOrEmpty(modelName))
        {
            ModelDescriptionGenerator modelDescriptionGenerator = Configuration.GetModelDescriptionGenerator();
            ModelDescription modelDescription;
            if (modelDescriptionGenerator.GeneratedModels.TryGetValue(modelName, out modelDescription))
            {
                return View(modelDescription);
            }
        }

        return View(ErrorViewName);
    }
}

【问题讨论】:

  • 您是否尝试注册HttpConfiguration?
  • @Steven 我如何在没有接口的情况下注册它?
  • 我想我不太明白你的问题。你只需注册它。试试container.RegisterSingleton<HttpConfiguration>(config);。
  • 比@Steven 成功了
  • 你从@Steven工作中得到这个建议吗?我的 Global.asax 中没有定义config,如果我只尝试container.RegisterSingleton<HttpConfiguration>(),我会得到For the container to be able to create HttpConfiguration it should have only one public constructor: it has 2

标签: c# dependency-injection simple-injector httpconfiguration


【解决方案1】:

将您的构造函数更改为private 并放回VS 生成的无参数构造函数中。你的HelpController 应该是这样的。

public class HelpController : Controller
{
    private const string ErrorViewName = "Error";

    public HelpController()
        : this(GlobalConfiguration.Configuration)
    {
    }

    private HelpController(HttpConfiguration config)
    {
        Configuration = config;
    }


    public HttpConfiguration Configuration { get; private set; }
}

【讨论】:

    猜你喜欢
    • 2015-04-02
    • 2016-09-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多