在尝试从多个提供者读取.Net Core2.0项目中的配置时,我并没有得到想要的结果。
我将以下NuGet包添加到股票.Net核心C#项目中以读取配置。这两个版本都安装了2.0.2。
安装包Microsoft.Extensions.Configuration.Binder 安装包Microsoft.Extensions.Configuration.Json
这是演示问题的代码。
class Program
{
static void Main(string[] args)
{
var InMemoryValue = new Dictionary<string, string>()
{
["Configuration.Test1"] = "IndexerValue1",
["Configuration.Test2"] = "IndexerValue2",
};
var configurationBuilder = new ConfigurationBuilder();
configurationBuilder
.AddInMemoryCollection(InMemoryValue)
.AddJsonFile("Config.json")
;
var configuration = configurationBuilder.Build();
Console.WriteLine("Indexer");
Console.WriteLine($" Test1:{configuration["Configuration.Test1"]}");
Console.WriteLine($" Test2:{configuration["Configuration.Test2"]}");
Console.WriteLine($" Test3:{configuration["Configuration.Test3"]}");
var getConfig = configuration.Get<Configuration>();
Console.WriteLine("Get");
Console.WriteLine($" Test1:{getConfig.Test1}");
Console.WriteLine($" Test2:{getConfig.Test2}");
Console.WriteLine($" Test3:{getConfig.Test3}");
var bindConfig = new Configuration();
configuration.GetSection("Configuration").Bind(bindConfig);
Console.WriteLine("Bind");
Console.WriteLine($" Test1:{bindConfig.Test1}");
Console.WriteLine($" Test2:{bindConfig.Test2}");
Console.WriteLine($" Test3:{bindConfig.Test3}");
Console.Write("Press [Enter] to end.");
Console.Read();
}
private class Configuration
{
public string Test1 { get; set; }
public string Test2 { get; set; }
public string Test3 { get; set; }
}
}以下是Config.json文件的内容。
{
"Configuration": {
"Test1": "JsonValue1",
"Test3": "JsonValue3"
}
}最后,这是输出。
Indexer
Test1:IndexerValue1
Test2:IndexerValue2
Test3:
Get
Test1:
Test2:
Test3:
Bind
Test1:JsonValue1
Test2:
Test3:JsonValue3
Press [Enter] to end.据我所知,我认为每个部分都应该有JsonValue1、IndexerValue2和JsonValue3。任何线索都会很感激的。
发布于 2018-05-12 20:51:14
正如评论中提到的..。更改对冒号的引用,并省略第二种情况。这似乎是多余的。这是我想出的密码。
class Program
{
static void Main(string[] args)
{
var InMemoryValue = new Dictionary<string, string>()
{
["Configuration:Test1"] = "IndexerValue1",
["Configuration:Test2"] = "IndexerValue2",
};
var configurationBuilder = new ConfigurationBuilder();
configurationBuilder
.AddInMemoryCollection(InMemoryValue)
.AddJsonFile("Config.json")
;
var configuration = configurationBuilder.Build();
Console.WriteLine("Indexer");
Console.WriteLine($" Test1:{configuration["Configuration:Test1"]}");
Console.WriteLine($" Test2:{configuration["Configuration:Test2"]}");
Console.WriteLine($" Test3:{configuration["Configuration:Test3"]}");
var bindConfig = new Configuration();
configuration.GetSection("Configuration").Bind(bindConfig);
Console.WriteLine("Bind");
Console.WriteLine($" Test1:{bindConfig.Test1}");
Console.WriteLine($" Test2:{bindConfig.Test2}");
Console.WriteLine($" Test3:{bindConfig.Test3}");
Console.Write("Press [Enter] to end.");
Console.Read();
}
public class Configuration
{
public string Test1 { get; set; }
public string Test2 { get; set; }
public string Test3 { get; set; }
}
}https://stackoverflow.com/questions/50301363
复制相似问题