我喜欢的.NET8 Preview 1功能

41a031113d7e7f9e13262643d3e4b8ba.png

.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
}));

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

88ed1089aa74f6ee15ee9257dca7fb5c.png

另一个点是在路由格式化,在.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中的效果图

7146590b3a1cef90b913ae9bcea65766.png

结果1:

383c3a88e425af9d7f2828fc26411490.png

结果2:

dad17aad451fda6c060ea5413ebf863c.png

当然.NET8 Preview1还带来了很多其他功能,后续慢慢道来。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值