using System; using System.Collections.Generic; using System.Text; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json; using Microsoft.Extensions.Configuration.FileExtensions; using Microsoft.Extensions.Configuration.EnvironmentVariables; using Microsoft.Extensions.Configuration.Memory; using Microsoft.Extensions.Configuration.Binder; using Microsoft.Extensions.Configuration.CommandLine; using Microsoft.Extensions.Configuration.Ini; using Microsoft.Extensions.Configuration.Xml; using Microsoft.Extensions.Configuration.UserSecrets; namespace Study.XUnitTest { /// /// ConfigurationProvider 使用学习 /// Microsoft.Extensions.Configuration 可用Nuget获取 /// InMemoryConfigurationProvider /// 适用于 Config.json 的 JsonFileConfigurationProvider /// 适用于 Config.Production.json 的 JsonFileConfigurationProvider /// EnvironmentVariableConfigurationProvider /// CommandLineConfigurationProvider /// /// https://msdn.microsoft.com/magazine/mt632279 /// https://www.cnblogs.com/artech/p/asp-net-core-config-4-1.html public class CustomProviderStudy { public IConfiguration ConfigurationFromDictionary() { Dictionary source = new Dictionary { ["LongDatePattern"] = "dddd, MMMM d, yyyy", ["LongTimePattern"] = "h:mm:ss tt", ["ShortDatePattern"] = "M/d/yyyy", ["ShortTimePattern"] = "h:mm tt" }; ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.AddInMemoryCollection(GetDictionary()); var configuration = configurationBuilder.Build(); return configuration; } public IConfiguration BuildConfigurationFromInMemoryCollection() { ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); // 添加默认连接 内存中.NET对象 configurationBuilder.AddInMemoryCollection(GetDictionary()); IConfiguration configuration = configurationBuilder.Build(); return configuration; } public IConfiguration BuildProviderFromObject() { ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder .AddInMemoryCollection(GetDictionary()) .AddJsonFile("Config.json", true) .AddEnvironmentVariables("EssentialDotNetConfiguration") .AddIniFile("", true, true) .AddXmlFile("", true, true) .AddCommandLine(new string[]{"1","2"}); return configurationBuilder.Build(); } public IConfigurationProvider BuildProviderFromXml() { return null; } public IConfiguration BuildProviderFromIni() { return null; } public IConfiguration BuildProviderFromAppCOnfig() { return null; } public IConfiguration BuildProviderFromJson() { JsonConfigurationSource source = new JsonConfigurationSource(); source.Path = "App.json"; JsonConfigurationProvider jsonConfigurationProvider = new JsonConfigurationProvider(source); jsonConfigurationProvider.Load(); return null; } public IConfiguration BuildProviderFromAppJson() { return null; } /// /// 字典 /// private static IReadOnlyDictionary GetDictionary() { IReadOnlyDictionary DefaultConfigurationStrings = new Dictionary() { ["Profile:UserName"] = Environment.UserName, [$"AppConfiguration:ConnectionString"] = GetDefaultionString(), [$"AppConfiguration:MainWindow:Height"] = "400", [$"AppConfiguration:MainWindow:Width"] = "600", [$"AppConfiguration:MainWindow:Top"] = "0", [$"AppConfiguration:MainWindow:Left"] = "0", }; return DefaultConfigurationStrings; } /// /// MsSQL连接字串 /// private static string GetDefaultionString() { return @"Server = (localdb)\\mssqllocaldb; Database = SampleData; Trusted_Connection = True; MultipleActiveResultSets = true"; } } }