首页 > 其他分享 >一个.Net简单、易用的配置文件操作库

一个.Net简单、易用的配置文件操作库

时间:2023-04-04 12:22:08浏览次数:50  
标签:配置文件 get cfg SomeInts 易用 myConfig new Net Configuration

在我们日常项目开发中,操作INI/CFG配置文件,往往会通过调用WinAPI来实现,WinAPI接口参数只支持字符串,而我们项目中,往往数据类型是多种多样的,在保存和获取配置值,我们就要进行类型的转换。

今天给大家推荐一个操作库,这个库就可以解决我们的问题。

项目简介

这是一个基于.Net开发的简单、易用的CFG/INI配置操作库,可以用文本或二进制格式读取、修改和保存配置文件和流,该库与.NET、.NET Core和Mono Framework完全兼容。

技术架构

跨平台:这是基于.Netstandard2.0开发的系统,可以部署在Docker,Windows,Linux,Mac。

项目结构

图片

SharpConfig:配置库操作项目,Example:使用示例。

使用方法

文件加载

Configuration.LoadFromFile("myConfig.cfg");        // 文件
Configuration.LoadFromStream(myStream);            // 文本流
Configuration.LoadFromString(myString);            // 文本
Configuration.LoadFromBinaryFile("myConfig.cfg");  // 二进制
Configuration.LoadFromBinaryStream(myStream);      // 二进制流

文件保存

myConfig.SaveToFile("myConfig.cfg");        // 文件
myConfig.SaveToStream(myStream);            // 文件流
myConfig.SaveToBinaryFile("myConfig.cfg");  // 二进制文件
myConfig.SaveToBinaryStream(myStream);      // 二进制流

使用方法

var cfg = new Configuration();

cfg["SomeStructure"]["SomeString"].StringValue = "foobar";
cfg["SomeStructure"]["SomeInt"].IntValue = 2000;
cfg["SomeStructure"]["SomeInts"].IntValueArray = new[] { 1, 2, 3 };
cfg["SomeStructure"]["SomeDate"].DateTimeValue = DateTime.Now;

cfg.SaveToFile(filename);

对象操作

var cfg = new Configuration();
//对象.
var p = new SomeClass    
{      
    SomeString = "foobar",      
    SomeInt = 2000,      
    SomeInts = new[] { 1, 2, 3 },      
    SomeDate = DateTime.Now    
};
//设置
cfg.Add(Section.FromObject("SomeStructure", p));

数组操作

var cfg = new Configuration();cfg["GeneralSection"]["SomeInts"].IntValueArray = new[] { 1, 2, 3 };
// 获取数组类型值
int[] someIntValuesBack = cfg["GeneralSection"]["SomeInts"].GetValueArray<int>();
float[] sameValuesButFloats = cfg["GeneralSection"]["SomeInts"].GetValueArray<float>();
string[] sameValuesButStrings = cfg["GeneralSection"]["SomeInts"].GetValueArray<string>();
// 获取数组对象
object[] sameValuesButObjects = cfg["GeneralSection"]["SomeInts"].GetValueArray(typeof(int));

配置文件注释

//获取包含所有有效注释分隔字符的数组。当前值为{“#”,“;”}。
Configuration.ValidCommentChars{get;}
//获取或设置保存配置时的首选注释字符。默认值为“#”。
Configuration.PreferredCommentChar{get;set;}
//获取或设置设置的数组元素分隔符。默认值为“,”。
Configuration.ArrayElementSeparator{get;set;}
//获取或设置一个值,该值指示在分析配置时是否应忽略内联注释。
bool Configuration.IgnoreInlineComments{get;set;}
//获取或设置一个值,该值指示在分析配置时是否应忽略前置注释。
bool Configuration.IgnorePreComments{get;set;}
//获取或设置一个值,该值指示在创建配置时是否应添加等号之间的空格。
bool Configuration.SpaceBetweenEquals{get;set;}
//获取或设置一个值,该值指示字符串值是否不带引号,但包括其间的所有内容
bool Configuration.OutputRawStringValues{get;set;}

项目地址

https://github.com/cemdervis/sharpconfig

更多开源项目请查看一个专注推荐优秀.Net开源项目的榜单

- End -

文章首发于公众号【编程乐趣】,欢迎大家关注。
图片

标签:配置文件,get,cfg,SomeInts,易用,myConfig,new,Net,Configuration
From: https://www.cnblogs.com/chingho/p/17040994.html

相关文章

  • 提供免费 TPU 的 ControlNet 微调活动来啦
    相信大家已经感受到AI绘画的魅力,多多少少也可以自称半个「prompt小专家」了,而在AI绘画的时候StableDiffusion也会出现一些小瑕疵,比如AI不是灵魂画「手」,还有一些特别的肢体动作也不是普通人可以用语言描述清楚的。这个时候,就轮到ControlNet出场啦!通过ControlNet技......
  • .Net下的CORS跨域设置
    .Net下的CORS跨域设置 CORS跨域访问问题往往出现在“浏览器客户端”通过ajax调用“服务端API”的时候。而且若是深究原理,还会发现跨域问题其实还分为【简单跨域】与【复杂跨域】这两种情况。网上对解决跨域限制有很多说明文章,但绝大多数要么解决的不完善(比如,没有区分【简单......
  • 它把RabbitMQ的复杂全屏蔽了,我朋友用它后被老板一夜提拔为.NET架构师
    它把RabbitMQ的复杂全屏蔽了,我朋友用它后被老板一夜提拔为.NET架构师 本文技术源自外企,并已在多个世界500强大型项目开发中运用。本文适合有初/中级.NET知识的同学阅读。(支持.NET/.NETFramework/.NETCore) RabbitMQ作为一款主流的消息队列工具早已广受欢迎。相比于其......
  • 一个非常简单用.NET操作RabbitMQ的方法
    一个非常简单用.NET操作RabbitMQ的方法 RabbitMQ作为一款主流的消息队列工具早已广受欢迎。相比于其它的MQ工具,RabbitMQ支持的语言更多、功能更完善。 本文提供一种市面上最/极简单的使用RabbitMQ的方式(支持.NET/.NETFramework/.NETCore),只需要会调用以下三个方法,你就几......
  • 高效简单的.Net数据库“访问+操作”技术
    高效简单的.Net数据库“访问+操作”技术 本文技术源自外企,并已在多个世界500强大型项目开发中运用。本文适合有初步C#、Linq、Sql知识的同学阅读。 相关技术在IDataAccess接口中提供。IDataAccess所在的命名空间是:DeveloperSharp.Framework.QueryEngine。(需事先从nuget......
  • 计网学习笔记六 Network Layer Overview
    这节课开始进入了网络层的学习,讲述了网络层提供的功能,还有路由器内部是什么样子的,以及virtualcircuit网络和datagram网络的一点比较。网络层有什么作用呢?用一句话来说,就是需要负责将传输层的报文段从发送端传输到接收端。再详细一点点就是:在发送方将传输层传下来的数据报文......
  • .NET周报 【4月第1期 2023-04-02】
    国内文章探索SK示例--GitHub存储库中的机器人https://www.cnblogs.com/shanyou/p/17280627.html微软3月22日一篇文章“Semantic-kernel嵌入和记忆:使用聊天UI探索GitHubRepos”[1],文章中进行了展示了嵌入,该文章解释了他们如何帮助开发人员提出有关GitHub存储库的问题......
  • 3、kubernetes各种port
    K8s中nodePort、port、targetPort、hostPort介绍1、nodeport外部流量访问k8s集群中service入口的一个方式(还有一种是loadbalancer)nodeIP:nodePort提供给外部流量访问k8s集群中service一个入口比如外部用户要访问k8s集群中的一个Web应用,那么我们可以配置对应service的type=Nod......
  • [重读经典论文]ResNet
    1.前言ResNet由微软亚洲研究院在论文《DeepResidualLearningforImageRecognition》中提出,获得2015年ImageNet图像分类、定位、检测,MSCOCO竞赛检测、分割五条赛道的冠军,通过引入残差连接,有效解决深层网络训练时的退化问题,可以通过加深网络大大提升性能。ResNet在ILSVRC-20......
  • 常用的一些配置文件整理
    前言在日常开发中常常需要引入一些其他依赖组件,但是准备配置文件却是一件麻烦的事情,本文旨在整理收集一些日常开发中需要用到的一些组件的配置。SpringBoot整合Mybatis整体目录结构如下pom.xml添加mysql、mybatis相关依赖<dependency><groupId>org.mybatis.s......