(精华)2020年10月21日 设计模式案例 .NetCore Configuration的实现思路
【摘要】
使用
#region Configuration使用
{
// 1、创建ConfigurationBuilder对象
ConfigurationBuilder configuration...
使用
#region Configuration使用
{
// 1、创建ConfigurationBuilder对象
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddJsonFile("app.json");
// 2、构建Configuration对象
Configuration configuration = configurationBuilder.Build();
string value = configuration["json"];
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
ConfigurationBuilder类
/// <summary>
/// 配置建造者类(用于构建配置对象)
/// </summary>
class ConfigurationBuilder
{
/// <summary>
/// 配置类
/// </summary>
private Configuration configuration = new Configuration();
/// <summary>
/// 1、添加json配置文件配置信息
/// </summary>
/// <returns></returns>
public ConfigurationBuilder AddJsonFile(string jsonFilePath ,string reload)
{
// 1、获取json文件输入流
/* Console.WriteLine($"{jsonFilePath}:获取json本地文件输入流");
// 2、转换成为Dictionary对象
configuration.Data.Add("json", "json文件内容");*/
JsonConfigurationReader jsonConfigurationReader = new JsonConfigurationReader();
jsonConfigurationReader.ReadJsonFile(jsonFilePath);
// 添加到集合
//configuration.Data.Add();
return this;
}
/// <summary>
/// 2、添加xml配置文件配置信息
/// </summary>
/// <returns></returns>
public ConfigurationBuilder AddXmlFile(string xmlFilePath)
{
/* Console.WriteLine($"{XMLFilePath}:获取XML本地文件输入流");
// 2、转换成为Dictionary对象
configuration.Data.Add("json", "json文件内容1");*/
return this;
}
/// <summary>
/// 3、添加Ini配置文件配置信息
/// </summary>
/// <returns></returns>
public ConfigurationBuilder AddIniFile(string iniFilePath)
{
return this;
}
/// <summary>
/// 构建Configuration对象
/// </summary>
/// <returns></returns>
public Configuration Build()
{
return configuration;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
处理JSON文件相关类
/// <summary>
/// json文件阅读接口
/// </summary>
interface IJsonConfigurationReader
{
public IDictionary<string, string> ReadJsonFile(string jsonFilePath);
}
/// <summary>
/// json文件阅读,将文件转换成为字典
/// </summary>
class JsonConfigurationReader : IJsonConfigurationReader
{
public IDictionary<string, string> ReadJsonFile(string jsonFilePath)
{
// 1、获取json文件输入流
Console.WriteLine($"{jsonFilePath}:获取json本地文件输入流");
// 2、转换成为Dictionary
IDictionary<string, string> Data = new Dictionary<string, string>();
Data.Add("json","json文件内容");
// 1、排序(扩展)
// 2、去重(扩展)
// 3、安全获取(代理) === 例子
// 4、远程获取(代理)
return Data;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
/// <summary>
/// 对于json文件读取进行排序装饰
/// </summary>
class JsonConfigurationReaderProxy : IJsonConfigurationReader
{
private IJsonConfigurationReader jsonConfigurationReader;
public JsonConfigurationReaderProxy(IJsonConfigurationReader jsonConfigurationReader)
{
this.jsonConfigurationReader = jsonConfigurationReader;
}
public IDictionary<string, string> ReadJsonFile(string jsonFilePath)
{
IDictionary<string, string> Data = jsonConfigurationReader.ReadJsonFile(jsonFilePath);
// 排序
SortData(Data);
return Data;
}
private void SortData(IDictionary<string, string> Data)
{
Console.WriteLine("json配置文件数据排序");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
/// <summary>
/// json配置文件进行安全读取
/// </summary>
class JsonConfigurationReaderProxy : IJsonConfigurationReader
{
private IJsonConfigurationReader jsonConfigurationReader;
public JsonConfigurationReaderProxy(IJsonConfigurationReader jsonConfigurationReader)
{
this.jsonConfigurationReader = jsonConfigurationReader;
}
public IDictionary<string, string> ReadJsonFile(string jsonFilePath)
{
// 1、安全验证
RemoteConnection(jsonFilePath);
IDictionary<string, string> Data = jsonConfigurationReader.ReadJsonFile(jsonFilePath);
return Data;
}
private void RemoteConnection(string jsonFilePath)
{
Console.WriteLine($"{jsonFilePath}:进行安全验证");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
Configuration类
/// <summary>
/// 配置类(核心领域模型)
/// </summary>
class Configuration
{
/// <summary>
/// 配置数据
/// </summary>
public IDictionary<string, string> Data { set; get; } = new Dictionary<string, string>();
// 1、扩展思路
// public List<IConfigurationProvider> lists = new List<IConfigurationProvider>();
/// <summary>
/// 设值
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public void Set(string key,string value)
{
Data.Add(key, value);
}
/// <summary>
/// 取值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public string this[string key]
{
get
{
return Data[key];
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。
原文链接:codeboy.blog.csdn.net/article/details/109202949
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)