为了账号安全,请及时绑定邮箱和手机立即绑定

依赖注入不适用于 IConfiguration C#.Net Core

依赖注入不适用于 IConfiguration C#.Net Core

C#
弑天下 2022-12-24 10:28:45
我使用以下代码注入了 IConfiguration: public class InjectorConfig    {        /// <summary>        /// configuration for DI        /// </summary>        /// <param name="services"></param>        /// <param name="configuration"></param>        public static void Init(IServiceCollection services, IConfiguration configuration)        {            services.AddSingleton<IConfiguration>(provider => configuration);            services.AddSingleton<AppSettingUtil>();        }}                             在我的名为AppSettingUtil的类中使用它时,我在 IConfiguration 对象上遇到空指针异常。下面是我正在使用的代码public class AppSettingUtil    {            public AppSettingUtil(IConfiguration configuration)       {          _configuration = configuration;       }       public IConfiguration Configuration { get; }    }在执行下面的函数时我得到空指针异常 private static object GetDefault(string name)    {        if (_configuration[name] != null)        {            return Convert.ToInt32(_configuration[name]);        }        return null;    }执行此函数时对象_configuration为空,因此抛出空指针异常,
查看完整描述

2 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

我在 ASP.Net Core 中使用这个并为我工作:


public class Startup

{

    public Startup(IHostingEnvironment env , IConfiguration configuration)

    {

        Configuration = configuration;

    }


    public IConfiguration Configuration { get; }


    public void ConfigureServices(IServiceCollection services)

    {

        services.AddSingleton<IConfiguration>(provider => configuration);

        services.AddSingleton<AppSettingUtil>();

    }

}


查看完整回答
反对 回复 2022-12-24
?
繁花如伊

TA贡献2012条经验 获得超12个赞

也可以按如下方式进行:


(我在 .net 核心控制台应用程序的主线程中执行此操作)


public static void Main(string[] args)

        {


            IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

            // Duplicate here any configuration sources you use.

            configurationBuilder.AddJsonFile("AppSettings.json");

            IConfiguration configuration = configurationBuilder.Build();


            Program.token = configuration["token"];

            Program.guidID = configuration["guidID"];

            Program.kind = configuration["kind"];

我在这个stackoverflow 问题中找到了解决方案。


这个对我有用。希望它也对你有用。


查看完整回答
反对 回复 2022-12-24
  • 2 回答
  • 0 关注
  • 258 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号