依赖注入不适用于 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"];
我在这个 中找到了解决方案。
对我有用。
希望对你也有用。
我已经使用以下代码注入了 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"];
我在这个
对我有用。 希望对你也有用。