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

Dependency Injection not working for IConfiguration C#.Net Core

我已经使用以下代码注入了 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 的 class 中使用它时,我在 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为空,因此抛出空指针异常,

我在 asp.net 核心中使用这个并为我工作:

 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>();
            }
      }

也可以这样操作:

(我在 .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"];

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

对我有用。 希望对你也有用。