前言
不知不觉,《.NET 6新特性试用》系列文章已经写了20多篇,而今天终于要告一段落了。
如果你还没有看过,详细文章列表在这里:
.NET 6新特性试用系列
在这么多特性中,我最喜欢如下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新特性远远不止于此,只是限于作者精力和能力有限,没有在这个系列中全部体现出来。
如果大家有任何想法和建议,欢迎到公众号“My IO”后台留言与我交流!