Fork me on GitHub

我喜欢的.NET8 Preview 1功能

  .NET8的第一个预预览版发布了,又开启了一波新技术的学习和研究。简单过了一下.NET8 Preview1,中间有两个功能是我的痛点,先睹为快。

  在项目中,数据从前端UI到后端(后端也分为好几层),再到数据库端,每个端或层的命名规则不尽相同,所以在端之间的数据项命名转换就个痛点,C#中,帕斯卡命名与官方规则最为接近,但数据库或前端就不是了,特别有些数据库对大小写敏感,或不支持大写,这就需要单独处理maping关系了,下面的json的SnakeCase命名规则,就解决大问题了,上代码:

复制代码
using System.Text.Encodings.Web;
using System.Text.Json;

var customer = new { ID = 1, PizCode="1234567",FirstName="素伟",LastName="桂" };

Console.WriteLine(JsonSerializer.Serialize(customer, new JsonSerializerOptions { 
    PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower,
    Encoder=JavaScriptEncoder.UnsafeRelaxedJsonEscaping
}));

Console.WriteLine(JsonSerializer.Serialize(customer, new JsonSerializerOptions {
    PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseUpper,
    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
}));

Console.WriteLine(JsonSerializer.Serialize(customer, new JsonSerializerOptions {
    PropertyNamingPolicy = JsonNamingPolicy.KebabCaseLower,
    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
}));

Console.WriteLine(JsonSerializer.Serialize(customer, new JsonSerializerOptions {
    PropertyNamingPolicy = JsonNamingPolicy.KebabCaseUpper,
    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
}));
复制代码

  下面是几个新的规则的运行结果:

 

  另一个点是在路由格式化,在.NET8中,对路由中的{}作了特列处理,更厉害的是还支持正则。

app.MapGet("/test/{id:int}", (int id) => { return $"你好:{id}"; });
app.MapGet("/orders/{tel:regex(^\\d{{3,4}}(-\\d{{4}}){{2}}$)}", (string tel) => { return $"电话:{tel}"; });

  VistalStudio中的效果图

 结果1:

结果2:

 

  想要更快更方便的了解相关知识,可以关注微信公众号 

 

posted @   桂素伟  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示