首页 > 编程语言 >C#读取toml文件

C#读取toml文件

时间:2023-04-01 13:23:44浏览次数:54  
标签:读取 people C# Tomlyn toml table Nett

Toml 格式太适合作为config文件了, nuget 上排名前两个类库是 Tomlyn 和 Nett.

Tomlyn 使用

试了一下 Tomly, 它在做文件和Model映射时, 会强制toml文件必须按照snake风格写, C# Model类必须要按照Pascal风格写, 不然在读取时直接抛出异常.

Toml 文件 C# model
[some_table] SomeTable

看了官方文档后, 决定放弃. 官方文档: https://github.com/xoofx/Tomlyn/blob/main/doc/readme.md

Nett 总体感受

Nett 项目使用体验简直太好了, 默认情况下, key和属性的映射将按照名字大小写完全匹配方式完成, 不会像 Tomlyn 库强制. 当然
Nett 支持 table array, API 设计非常简洁. 唯一的问题是: 作者已经放弃了后续的开发, 好在基本功能都有了.
github 项目 https://github.com/paiden/Nett
文档主页 https://paiden.github.io/Nett/howto/read.html

Nett 快速上手

  1. 安装 Install-Package Nett
  2. 定义一个 toml 文件
    包含了缺省table 和一个命名 table 和一个 table array.
EnableDebug = true

[Server]
Timeout = 1m

[[people]]
name = "Alice"
age = 25

[[people]]
name = "Bob"
age = 42

  1. C# 读取 toml

定义 Model 类

public class Person
{
    public string name { get; set; } 
    public int age { get; set; }
}

将 table array 映射到model list中

TomlTableArray peopleTable = Toml.ReadFile("people.toml").Get<TomlTableArray>("people");

List<Person> people = peopleTable.Items
                                .Select(item => item.Get<Person>())
                                .ToList();

标签:读取,people,C#,Tomlyn,toml,table,Nett
From: https://www.cnblogs.com/harrychinese/p/toml.html

相关文章

  • CentOS 7.X PwServer 架设教程
    水木年华1.上传Java并设置环境变量#修改etc/profile文件末尾增加Java的环境变量JAVA_HOME=/usr/java/jdk1.8.0_301JRE_HOME=/usr/java/jdk1.8.0_301/jreCLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libPATH=$PATH:$JAVA_HOME/bin:$JR......
  • Anaconda 使用笔记 (可能有些乱 自己挑着看)
    查看镜像condaconfig--showchannels删除镜像condaconfig--removechannels源名称或链接恢复默认镜像condaconfig--remove-keychannels添加镜像清华镜像更新了condaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64/cond......
  • Microsoft Visual Studio 2022 透明背景设置
    目录1.微软扩展官网2.待安装的扩展包3.如何安装扩展包?4.DarkTransparency主题设置(透明区域增加)5.ClaudiaIDE具体参数设置6.背景图片的显示和隐藏1.微软扩展官网微软扩展官网:—>VisualStudioMarketplace2.待安装的扩展包序号扩展包(vsix包)官方说明1C......
  • CAN NM中的主动节点和被动节点、被动唤醒概念
    1.主动节点承担主动发送网络管理报文任务,一般为KL15硬线、传感器等。一个网络中可能有多个主动节点2.被动节点由其他节点发送网络管理报文唤醒,调用CanNm_PassiveStartUp函数接口。3.共同点主动节点和被动节点都可以被动唤醒。被动节点被动唤醒默认不发网络管理报文,具体看客......
  • Visual Studio Code 1.77 发布,扩展的 GitHub Copilot 集成
    VSCode1.77已发布,此版本一些主要亮点包括:Accessibility改进 -用于悬停、通知和StickyScroll的新键盘快捷键。、down、home、end、pageup和pagedown 键来聚焦悬停控件并进行水平和垂直滚动。聚焦悬停控件的键盘快捷键(Ctrl+KCtrl+I)与用于在主光标位置显示悬停的......
  • 信息搜寻理论-Information Foraging in Information Access Environments
    信息搜寻环境中的信息搜寻P.Pirolli和S.K.CardPeterPirolli,StuartK.Card(1995).InformationForaginginInformationAccessEnvironments.Conference:HumanFactorsinComputingSystems,CHI'95ConferenceProceedings,Denver,Colorado,USA,May7-11,1995摘要......
  • c++socket编程之客户端编写
    开头用WINAPI完成了socket客户端的编写cursor很适合用于写这种单文件的WINAPI代码编写,写的很规范,它帮助我完成了API的调用,参数的选择和异常值处理,自己去写还挺费时间但不得不吐槽下,我提的几个处理中文和处理多任务的需求,无论我换何种说法,它实现的都不太好,甚至还有错误功......
  • 小米路由器3C刷入Breed和OpenWrt
    本文链接:https://www.cnblogs.com/snoopy1866/p/17278237.html准备工具:小米路由器3C(R3L)、网线、电脑准备软件:Xshell教程中使用到的文件均打包保存在:https://wwpe.lanzoub.com/ibnVl0rqr09a教程参考了以下多位大佬的帖子:https://www.right.com.cn/forum/forum.php?mod=viewthr......
  • cv2提取特定帧
    importcv2cap=cv2.VideoCapture('student_video/22.MP4') #返回一个capture对象  cap.set(cv2.CAP_PROP_POS_FRAMES,i) #设置要获取的帧号  a,b=cap.read() #read方法返回一个布尔值和一个视频帧。若帧读取成功,则返回True  cv2.imshow('b',b)  ......
  • c++ socket编程之成品展示
    开头前面两篇介绍了服务端和客户端的编写,本篇展示运行效果多次测试,修复了bug,目前运行稳定,能够用于生产环境支持多个连接,能够同时处理多个数据传输任务效果展示服务端初始界面......