我有一个控制台应用程序,我正在其中构建配置
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.Build();
var services = new ServiceCollection();
services.AddOptions();
services.Configure<ResourceConfiguration>(config.GetSection("ResourceConfiguration"));
这不起作用
Error CS1503: Argument 2: cannot convert from 'Microsoft.Extensions.Configuration.IConfigurationSection' to 'System.Action<ResourceConfiguration>' (29, 55)
我的使用中有以下内容(以及我自己的命名空间)
使用 Microsoft.Extensions.Configuration;
使用 Microsoft.Extensions.DependencyInjection;
使用系统;
使用系统.IO;
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.Build();
返回 IConfigurationRoot 这可能是问题所在?
我究竟做错了什么?
这是.NET Core 3.1
Paul
我使用 .NET 6 创建了一个控制台应用程序来帮助您。
检查下面的代码并让我们知道它是否有效。 =)
应用程序设置.json
{
"SETUP_OPTIONS":
{
"MyProperty": 100,
"MyProperty2": "Success!"
}
}
所需用途
using Microsoft.Extensions.Options;
using System.Threading.Tasks;
using System.IO;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
设置选项类
public class SetupOptions
{
public const string ConfigKey = "SETUP_OPTIONS";
public int MyProperty { get; set; }
public string MyProperty2 { get; set; }
}
程序.cs
static async Task Main(string[] args)
{
IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(currentDirectory)
.AddJsonFile("appsettings.json", optional: false)
.Build();
var serviceCollection = new ServiceCollection();
ConfigureServices(serviceCollection, configuration);
var serviceProvider = serviceCollection.BuildServiceProvider();
await serviceProvider.GetService<MyAppClass>().RunAsync(args);
}
private static void ConfigureServices(ServiceCollection serviceCollection, IConfiguration configuration)
{
// AppSettings IOptions configuration
serviceCollection.AddOptions<SetupOptions>().Bind(configuration.GetSection(SetupOptions.ConfigKey));
serviceCollection.AddTransient<MyAppClass>();
}
MyAppClass.cs
public class MyAppClass
{
private readonly SetupOptions _setupOptions;
// Inject IOptions in your constructor
public MyAppClass(IOptions<SetupOptions> setupOptions)
{
_setupOptions = setupOptions?.Value;
}
public async Task RunAsync(string[] args)
{
// Use your Setup Options value loaded from appsettings file.
var myPropertyValue = _setupOptions.MyProperty;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)