You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.6 KiB
C#
129 lines
4.6 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// ConfigurationProvider 使用学习
|
|
/// Microsoft.Extensions.Configuration 可用Nuget获取
|
|
/// InMemoryConfigurationProvider
|
|
/// 适用于 Config.json 的 JsonFileConfigurationProvider
|
|
/// 适用于 Config.Production.json 的 JsonFileConfigurationProvider
|
|
/// EnvironmentVariableConfigurationProvider
|
|
/// CommandLineConfigurationProvider
|
|
/// </summary>
|
|
/// <example>https://msdn.microsoft.com/magazine/mt632279</example>
|
|
/// <example>https://www.cnblogs.com/artech/p/asp-net-core-config-4-1.html</example>
|
|
public class CustomProviderStudy
|
|
{
|
|
|
|
public IConfiguration ConfigurationFromDictionary()
|
|
{
|
|
Dictionary<string, string> source = new Dictionary<string, string>
|
|
{
|
|
["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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 字典
|
|
/// </summary>
|
|
private static IReadOnlyDictionary<string, string> GetDictionary()
|
|
{
|
|
IReadOnlyDictionary<string, string> DefaultConfigurationStrings =
|
|
new Dictionary<string, string>()
|
|
{
|
|
["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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// MsSQL连接字串
|
|
/// </summary>
|
|
private static string GetDefaultionString()
|
|
{
|
|
return @"Server = (localdb)\\mssqllocaldb; Database = SampleData; Trusted_Connection = True; MultipleActiveResultSets = true";
|
|
}
|
|
}
|
|
}
|