查看原文
其他

.NET 6 新特性:最实用的5个特性

My IO DotNet 2022-07-19

前言


不知不觉,.NET 6新特性系列文章已经写了20多篇,终于要告一段落了。在这么多特性中,最喜欢如下5个特性


1、最小Web API


仅需三行代码,就可以生成一个完整功能的Web API:

var app = WebApplication.Create(args);  
app.MapGet("/", () => "hello My IO!");  
app.Run();  

虽然这看起来非常简陋,但是必须看到这个特性的真正价值——对于新人来说,更容易入门和理解。与其在开始时就使事情变得复杂,不如先简化事情再稍后增加复杂性。

2、热重载

修改代码后无需重新编译,就可以将代码更改立即应用于正在运行的应用程序上。通过减少等待应用重新生成、重启、重新导航到你在应用中的上一个位置等操作的时间来提高工作效率。

3、隐式using指令

再也不用在cs文件中写大量using指令了,只需修改项目文件,即可增加我们的global using:

<ItemGroup>  
    <Using Include="GlobalUsingDemo" />  
</ItemGroup>  

这可以大大减少模板文件的代码,使你的代码更加紧凑。

4、扩展属性模式

可以使用.引用对象属性的嵌套成员,进行模式匹配:

if(obj is Employee { Manager.Name:"lisi", Manager.Manager.Position: "CEO" } employee)  

这可以使模式匹配表达式更易于阅读,特别是对于嵌套较深的类型。拥有的嵌套越多,此功能就越强大。

5、System.Text.Json序列化代码自动生成

只需简单的几行代码:

[JsonSerializable(typeof(WeatherForecast))]  
internal partial class WeatherForecastContext : JsonSerializerContext  
{  
}  

就可以在编译时自动生成序列化代码,提升性能:

private static void WeatherForecastSerializeHandler(global::System.Text.Json.Utf8JsonWriter writer, global::WebApplication1.WeatherForecast? value)  
{  
    if (value == null)  
    {  
        writer.WriteNullValue();  
        return;  
    }  
  
    writer.WriteStartObject();  
    writer.WriteNumber(PropName_TemperatureC, value.TemperatureC);  
    writer.WriteNumber(PropName_TemperatureF, value.TemperatureF);  
    writer.WriteString(PropName_Summary, value.Summary);  
  
    writer.WriteEndObject();  
}  

以前都是我们自己用Source Generator开发功能,现在终于微软自己也用上了。

结论

当然.NET 6新特性远远不止于此,只是限于作者精力和能力有限,没有在这个系列中全部体现出来。

- EOF -

推荐阅读  点击标题可跳转
.NET 6 新增20个 API .NET 6 中 gRPC 的新功能.NET 6 新特性:最小WebAPI


看完本文有收获?请转发分享给更多人

推荐关注「DotNet」,提升.Net技能 

点赞和在看就是最大的支持❤️

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存