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#

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";
}
}
}