
.net core 自定义配置数据源:低成本实现定制化配置方案
扩展步骤
- 实现IConfigurationSource
- 实现IConfigurationProvider
- 实现Addxxx扩展方法
项目结构
简单示例
修改内容
MyConfigurationProvider.cs
class MyConfigurationProvider:ConfigurationProvider
{
//每3秒变更一次
Timer timer;
public MyConfigurationProvider() : base()
{
timer = new Timer();
timer.Elapsed += Timer_Elapsed;
timer.Interval = 3000;
timer.Start();
}
public override void Load()
{
//加载数据
Load(false);
}
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
Load(true);
}
private void Load(bool v)
{
this.Data["lastTime"] = DateTime.Now.ToString();
if (v)
{
base.OnReload();
}
}
}
MyConfigurationSource.cs
class MyConfigurationSource : IConfigurationSource
{
public IConfigurationProvider Build(IConfigurationBuilder builder)
{
return new MyConfigurationProvider();
}
}
Program.cs
var builder = new ConfigurationBuilder();
builder.Add(new MyConfigurationSource());
var configRoot = builder.Build();
Console.WriteLine($"lastTime:{configRoot["lastTime"]}");
Console.ReadKey();
运行结果
自定义扩展
修改内容
MyConfigurationBuilderExtensions.cs
namespace Microsoft.Extensions.Configuration
{
public static class MyConfigurationBuilderExtensions
{
public static IConfigurationBuilder AddMyConfiguration(this IConfigurationBuilder builder)
{
builder.Add(new MyConfigurationSource());
return builder;
}
}
}
Program.cs
var builder = new ConfigurationBuilder();
builder.AddMyConfiguration();
var configRoot = builder.Build();
//监听
ChangeToken.OnChange(() => configRoot.GetReloadToken(), () => {
Console.WriteLine($"lastTime:{configRoot["lastTime"]}");
});
Console.WriteLine($"开始了");
Console.ReadKey();
运行结果
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术