c# - 从 Web.config 读取 Ninject WithConstructorArguments

标签 c# asp.net-mvc-4 web-config ninject

我有以下 RegisterServices 函数:

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<ISearchRepository>().To<SearchRepository>();
    kernel.Bind<ITagRepository>().To<TagRepository>();
    kernel.Bind<IStore>().To<Store>()
        .WithConstructorArgument("dbId", ConfigurationManager.AppSettings["DatabaseId"])
}

使用断点,我可以确认 ConfigurationManager 正在正确填充值。

但是,当内核完成绑定(bind)时,运行时出现以下异常:

enter image description here

如果我用常量替换 ConfigurationManager 引用,应用程序运行正常。

我不想失去通过配置文件配置 Ninject 的能力,这是 Ninject 的限制吗?

最佳答案

不,Ninject 没有这样的限制。

我想问题是 ConfigurationManager.AppSettings["DatabaseId"] 返回 string 而你的 dbId 参数是 类型int(或其他一些非字符串类型)。

尝试:

var databaseId = Int32.Parse(ConfigurationManager.AppSettings["DatabaseId"]); 
kernel.Bind<IStore>()
      .To<Store>()
      .WithConstructorArgument("dbId", databaseId);

关于c# - 从 Web.config 读取 Ninject WithConstructorArguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14697038/

相关文章:

mysql - Asp.NET MVC 如何在数据表中快速显示大量数据

asp.net-mvc-4 - 将数据源添加到报表查看器时 Visual Studio 2012 崩溃

c# - MVC3 应用重定向到 ReturnUrl=%2f

asp.net - 启用自定义错误时,Elmah 不会触发

asp.net - 在 Asp.Net 中使用 SqLite

c# - 在两个 asp.net MVC web 应用程序之间传递非 ASCII 字符将不会被识别

c# - 如何在 ASP.NET 的所有页面中维护 session ?

asp.net-membership - Visual Studio 2012中的网站管理工具

c# - 以编程方式将访问控制列表 (ACL) 权限分配给 'this folder, subfolders and files'

c# - 以对象和成员名称作为参数的通用函数?