前言

    美国当地时间12月4日,微软2019开发者大会中发布了一系列的重磅消息,包含了软硬件和开源社区的各种好消息是铺天盖地,作为一名普通的开发者,我第一时间下载了 .NET Core 2.2 的源码,针对发布说明逐条浏览,并截取了部分常用的功能进行尝试,下面就与大家分享。

1. 对 API 接口统一大小写的支持
  • 1.1 查看以下接口代码

  • 1.2 默认情况下,字典内地字段名称将不会被应用 CamelCaseNamingStrategy ,所以如果要保持字段名称大小写统一的问题,可在 ConfigureServices 中加入 AddJsonOptions(o => o.UseCamelCasing(true))

  • AddJsonOptions 内置两个默认扩展,你可以使用 UseCamelCasing 或者 UseMemberCasing ,如果使用 UseMemberCasing ,表示使用成员字段的大小写规则,即不改变大小写输出

  • 1.3 有意思的是,AddJsonOptions(o => o.UseCamelCasing(true)) 显式传入值的方式是由 JamesNK 这个哥们杠出来的结果,详见

https://github.com/aspnet/Mvc/pull/7962
2. 复合验证-验证模型的扩展
  • 1.1 在之前的版本中,如果希望对一个属性应用多个验证,必须书写多个验证类,如

  • 2.2 在 .NET Core 2.2 以后的版本中,你可以通过扩展来避免这个问题,通过继承自 ValidationProviderAttribute 并重写 GetValidationAttributes 方法来实现复合验证

  • 2.3 看起来是不是简洁多了

3. API Controller 增加默认的响应处理类型
  • 3.1 在以前的版本中,可以通过在 API 上增加特性 ProducesResponseType 来处理不同的 HttpCode 响应,然后 pranavkm 觉得,我们应该像 Swagger/OpenApi 一样,增加一个默认的响应处理类型,然后就出现了

  • 3.2 说实话,上面的这个类,我没搞懂到底怎么用,有知道的朋友请在评论中回复,我将把它加入文中,感谢。

4. Razor 视图部分优化

  • 4.1 .NET Core 团队认为,在 Razor 视图中,如果使用 @Html.Parital 引入分部视图,可能存在潜在的死锁情况,所以将 @Html.Parital 变更为

 //旧的:@Html.Partial("_StatusMessage", Model.StatusMessage) // 新的:<partial name="_StatusMessage", for="StatusMessage" />

前言

美国当地时间12月4日,微软2019开发者大会中发布了一系列的重磅消息,包含了软硬件和开源社区的各种好消息是铺天盖地,作为一名普通的开发者,我第一时间下载了 .NET Core 2.2 的源码,针对发布说明逐条浏览,并截取了部分常用的功能进行尝试,下面就与大家分享。

一、 对 API 接口统一大小写的支持

1.1 查看以下接口代码

[HttpGet]public ActionResult<UserInfo> Get(){    return new UserInfo() { Name = "Ron.liang", RegTime = DateTime.Now };}[HttpGet("{id}")]public ActionResult<Dictionary<string, string>> Get(int id){    return new Dictionary<string, string> {        { "Name", "Ron.liang" },        { "RegTime", DateTime.Now.ToString() }    };}

// 接口 1 输出{    name: "Ron.liang",    regTime: "2018-12-05T10:40:37.5090634+08:00"}// 接口 2 输出{    Name: "Ron.liang",    RegTime: "2018-12-05T10:40:58.5072645+08:00"}

1.2 、默认情况下,字典内地字段名称将不会被应用 CamelCaseNamingStrategy ,所以如果要保持字段名称大小写统一的问题,可在 ConfigureServices 中加入 AddJsonOptions(o => o.UseCamelCasing(true))

public void ConfigureServices(IServiceCollection services){    services.AddMvc().AddJsonOptions(o => o.UseCamelCasing(false)).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);}

AddJsonOptions 内置两个默认扩展,你可以使用 UseCamelCasing 或者 UseMemberCasing ,如果使用 UseMemberCasing ,表示使用成员字段的大小写规则,即不改变大小写输出

1.3 、有意思的是,AddJsonOptions(o => o.UseCamelCasing(true)) 显式传入值的方式是由 JamesNK 这个哥们杠出来的结果,详见https://github.com/aspnet/Mvc/pull/7962

二、 复合验证-验证模型的扩展

2.1、 在之前的版本中,如果希望对一个属性应用多个验证,必须书写多个验证类,如

public class UserInfo{    [StringLength(20), RegularExpression(@"^[a-zA-Z]$")]    public string Name { get; set; }    [StringLength(20), RegularExpression(@"^[a-zA-Z]$")]    public string Title { get; set; }    public DateTime RegTime { get; set; }}

2.2、 在 .NET Core 2.2 以后的版本中,你可以通过扩展来避免这个问题,通过继承自 ValidationProviderAttribute 并重写 GetValidationAttributes 方法来实现复合验证

public class UserInfo{    [Name]    public string Name { get; set; }    [Name]    public string Title { get; set; }    public DateTime RegTime { get; set; }}

public class NameAttribute : ValidationProviderAttribute{    public override IEnumerable<ValidationAttribute> GetValidationAttributes()    {        return new List<ValidationAttribute>        {            new RequiredAttribute(),            new RegularExpressionAttribute(pattern: "[A-Za-z]*"),            new StringLengthAttribute(maximumLength: 20)        };    }}

2.3 、看起来是不是简洁多了

三、 API Controller 增加默认的响应处理类型

3.1 、在以前的版本中,可以通过在 API 上增加特性 ProducesResponseType 来处理不同的 HttpCode 响应,然后 pranavkm 觉得,我们应该像 Swagger/OpenApi 一样,增加一个默认的响应处理类型,然后就出现了

namespace Microsoft.AspNetCore.Mvc{    /// <summary>    /// A filter that specifies the type of the value and status code returned by the action.    /// </summary>    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]    public class ProducesResponseTypeAttribute : Attribute, IApiResponseMetadataProvider{       ....}

3.2 、说实话,上面的这个类,我没搞懂到底怎么用,有知道的朋友请在评论中回复,我将把它加入文中,感谢。

四、Razor 视图部分优化

4.1 、.NET Core 团队认为,在 Razor 视图中,如果使用 @Html.Parital 引入分部视图,可能存在潜在的死锁情况,所以将 @Html.Parital 变更为

//旧的:@Html.Partial("_StatusMessage", Model.StatusMessage)

// 新的:<partial name="_StatusMessage", for="StatusMessage" />

4.2、 如果你现在尝试使用 .NET Core 2.2 创建新的 MVC 项目,你就马上可以看到该变化了

五、钩子

通过设置环境变量,可以在程序 Main 方法运行前执行一些业务逻辑,但是 .NET Core 团队建议,该功能只是一些低级的钩子,不要用于复杂的业务,如有需要,还是应该使用依赖注入,有空再尝试一下该功能,应该会很有意思

结语

  • 在 .NET Core 2.2 版本中,有很多性能上的优化,可以看到开源社区的力量确实强大,本文仅节选了部分常用功能进行尝试,相信后续会有更多朋友的分享

  • 期待 3.0 早日到来

原文地址:https://www.cnblogs.com/viter/p/10070248.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

.NET Core 2.2 新增部分功能使用尝鲜相关推荐

  1. 手机技巧:安卓微信 8.0.34 内测版更新功能提前尝鲜

    目录 更新功能介绍 1.聊天记录正式支持图片搜索 2.消息通知设置增加视频号和直播推送功能 3.划线变「赞」 4.搜一搜页面变化 如何获取更新版本 2023年3月14日最新消息微信官方团队发布了安卓微 ...

  2. 最新版dotnet-cli下的ASP.NET Core和asp.net mvc【RC2尝鲜】

    RC1是http://get.asp.net里面提供的https://docs.asp.net/en/latest/getting-started/index.html,使用旧的ASP.NET Cor ...

  3. Hackathon 实用指南丨快速给 TiDB 新增一个功能

    TiDB Hackathon 2022 火热报名中!你报名了吗(还没报名看这里)?你有 idea 了吗(没有 idea 看这里)? 有了 idea,但是不够了解 TiDB,不知道如何动手实践?本文将通 ...

  4. ASP.NET 2.0 中的新增安全功能

    发布日期: 8/26/2004 | 更新日期: 8/26/2004 Stephen Walther Microsoft Corporation 适用于: Microsoft ASP.NET 2.0 M ...

  5. ip guard保证java代码安全_IP-guard加密新增四大功能 让一“密“防百疏

    近日内网安全管理企业溢信科技旗下的IP-guard透明加密新增四大功能,分别是明文备份服务器.自定义密钥设置.服务器定期备份以及只读加密,从用户加密文档的储存.备份以及查看上提供了更安全的保障和更有效 ...

  6. 微信小程序新增推广功能,支持自定义关键词

    为方便用户找到所需小程序,并帮助小程序更准确地触达用户,微信小程序向开发者提供了自定义关键词的功能.小程序后台新增推广功能,支持开发者添加与业务相关的自定义关键词.开发者可在小程序后台的 " ...

  7. android11beta支持什么手机,Android 11 Beta1发布,新增多种功能,网友:Android基于 Flyme...

    原标题:Android 11 Beta1发布,新增多种功能,网友:Android基于 Flyme 6.11日消息,谷歌于今日凌晨正式推送了 Android 11 Beta 1 版系统,不仅新增了可悬浮 ...

  8. 鸿蒙行车记录仪,百度导航新增行车记录仪功能 可消除碰瓷风险

    年关将至,市区内各类大型商场.超市.菜市场等地人流密集,此类地点非常容易出现意外状况,市民在驾车出行时千万要提高注意力,警惕碰瓷者倒在你面前.如果事先装载行车记录仪,就能避免一桩"冤案&qu ...

  9. JeeWx 商业版本最近新增什么功能啦?

    JeeWx 商业版本最近新增什么功能啦? 2014-12-18 jeecg JEECG jeewx开发新功能 一.微信墙 此功能可以设置属于该公共号的微信墙,在微信客户端上输入微信墙即可进入微信墙模式 ...

最新文章

  1. 来呀!AI喊你斗地主——首个搞定斗地主的深度神经网络
  2. 打破定式,突破屏障,走出自己的创意舒适区
  3. 如何添加sersync进程监控脚本
  4. 【GAN优化】详解对偶与WGAN
  5. springmvc常用5种注解_砂石骨料线常用的5种破碎设备、5种筛分和制砂设备特点比较...
  6. Cookie、session、token对比
  7. 陶哲轩实分析 引理8.2.7 注
  8. 数据标准在数据治理中的意义
  9. HCIE-Security Day31:IPSec:实验(六)配置PPPoE拨号分支与总部建立IPSec隧道示例
  10. ClassGraph使用
  11. linux桌面图标主题包,推荐 4 款漂亮的 Linux 图标主题
  12. 后处理安装_“国六”提前实施,尾气后处理技术如何再升级?
  13. C_CAPM模型(上)
  14. 女人喝酸奶要注意什么
  15. 噩梦系列篇之Player随鼠标转向控制
  16. 前端(h5)js监控手机电池状况(是否充电、剩余电量、剩余可用时间等等)
  17. MySql查询表是否被锁
  18. 牛客网学习笔记——简单题们(二)
  19. 基于PHP的OA办公系统项目
  20. oracle11g 常用函数(Functions)详解

热门文章

  1. Windows Hook
  2. win 7 旗舰版镜像 注入USB3.0 驱动
  3. apache服务器搭建过程中需要注意到的一些问题
  4. cake-build -.Net Core 跨平台构建自动化系统。
  5. 分库分表之历史表如何选择最佳分片路由规则
  6. 浅谈.NET 6 中 gRPC 的最新功能
  7. 如何通过 Linq 将集合拆成多个块?
  8. .NET 6新特性试用 | record struct
  9. 单体应用 适合采用 dapr 构建吗?
  10. Goodbye 2020,Welcome 2021 | 沉淀 2021