日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在Teams app代码中enable nullable

發布時間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Teams app代码中enable nullable 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

昨天講了一下如何把代碼升級到 net6,今天我優化了好幾個小時更新代碼,enable了nullable。

c#的nullable我一直非常喜歡,它可以幫助開發人員,讓開發人員去思考,哪些地方需要可以為null,哪些地方不需要。它并不是萬能的靈丹妙藥,但是它的確可以大大的提高代碼質量。我自己通過在LuckyDraw里enable了nullable,從而發現了好幾個潛在的bug。現在一些其他語言,比如typescript也有類似功能,所以我覺得這個會是以后開發語言的一種趨勢。

這篇文章我來分享一下我遇到的一些nullable的問題,和如何解決的,希望對大家有一點點幫助。

首先,我們需要在csproj文件中加上?<Nullable>enable</Nullable>?來讓編譯器知道我們希望打開nullable開關。

<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>net6.0</TargetFramework><LangVersion>10</LangVersion><Nullable>enable</Nullable><ImplicitUsings>enable</ImplicitUsings></PropertyGroup>...

保存csproj文件后,稍等幾秒鐘后,你就會發現你的代碼里多了很多警告,這就是 c# 編譯器發現的一些可能是潛在的問題。

首先是和json相關的,比如:

var editForm = JsonSerializer.Deserialize<CompetitionEditForm>(str); editForm.abc ...;

這里的warning在第二行,原因是?JsonSerializer.Deserialize<T>()?的返回值可能為 null,所以我們不能直接就開始使用?editForm,我們需要做一個判斷:

var editForm = JsonSerializer.Deserialize<CompetitionEditForm>(str); if (editForm != null) {editForm.abc ...; }

當然這種改發稍微有點麻煩,每個地方都需要加上 if 判斷。我的做發是增加一個新的 method,如下:

public static class JsonHelper {public static TValue Deserialize<TValue>(string json, JsonSerializerOptions? options = null){var value = JsonSerializer.Deserialize<TValue>(json, options);if (value == null){throw new Exception($"A non-null value is expected, but the result of Deserialize<{typeof(TValue).FullName}>() is null.");}return value;} }

這樣我們確保我們這個方法不會返回 null,所以之前的代碼就可以改成下面這樣,沒有warning。

var editForm = JsonHelper.Deserialize<CompetitionEditForm>(str); editForm.abc ...;

另外還有一塊也是和json相關的,因為目前teams bot sdk還是使用Newtonsoft.JSON,所以我們的teams app里還是有很大一部分代碼還是會和 Newtonsoft.JSON 發生關系。比如:

public static string GetBotMessagePreviewAction(this Activity activity) {var value = (JObject)activity.Value;var botMessagePreviewAction = (string)value.GetValue("botMessagePreviewAction");return botMessagePreviewAction; }

因為 activity 的 Value 是 JObject,而 JObject 的 GetValue() 可能會返回空,所以上面的代碼需要對 botMessagePreviewAction 進行是否為 null 的判斷。不過因為我在其他地方做過判斷,只要調用這個方法,就說明 JObject 里肯定有?botMessagePreviewAction?這個屬性。所以我采用了一個簡單的改法,使用?!,在語句最后加了?!,來告訴編譯器,我確定不會為 null。

var botMessagePreviewAction = (string)value.GetValue("botMessagePreviewAction")!;

上面只是在我的項目里遇到的兩個常見問題,以及我的修改方法。僅供參考。

總結

以上是生活随笔為你收集整理的在Teams app代码中enable nullable的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产 xxxx | 亚洲精品一线二线三线 | 亚洲影音先锋 | 国产精品入口66mio男同 | 欧美精品成人 | 久久99国产视频 | 国产精品九 | 久久av免费 | 快射视频网 | 亚洲美女在线观看 | 操比网站| 91黄色免费版 | 国产va在线观看 | 久久三级视频 | 一级片99 | 色播在线视频 | 日本黄色免费在线观看 | 中文字幕av一区二区三区谷原希美 | 久久av一区二区三区漫画 | 亚洲黄色av网站 | 国产午夜精品一区二区三区视频 | 综合一区在线 | 国产精品人成 | 91尤物国产福利在线观看 | 国产老女人乱淫免费可以 | 日韩高清一区二区 | 日韩av电影网址 | 四虎少妇做爰免费视频网站四 | 亚洲精品ww | 天天综合网天天综合色 | 夜夜春视频 | 五月天激情开心网 | 日韩精品一区二区三区视频在线观看 | 男生吃小头头的视频 | 大地av | 男女视频免费 | 久久香蕉精品视频 | 久久婷婷一区二区 | 成人黄色免费网址 | 中文天堂在线观看 | 制服诱惑一区二区 | 亚洲精品自拍偷拍 | 天啪 | 男人和女人日批视频 | 欧美a网站| 精品在线观看视频 | 国产精品999视频 | 国产精品第9页 | 一区二区三区美女视频 | 9l视频自拍蝌蚪9l视频成人 | 九色porny自拍 | 韩国一级淫片免费看 | 日韩欧美高清在线视频 | 国产青青在线 | 午夜aaa片一区二区专区 | 黑人av| 在线色导航 | 日本熟妇一区二区三区四区 | 国产伊人网 | 久久99精品久久久久子伦 | 亚洲av无码一区二区三区在线播放 | 国产经典av| 日韩欧美一区二区三区在线 | 红桃视频网站 | 伊人一二三 | 日韩1级片 | 欧美亚洲综合久久 | 国产精品www色诱视频 | 国产精品入口免费 | 日本a在线免费观看 | 国产精品久久99 | 久久久久久久久久免费视频 | sm在线观看 | 成人精品在线观看视频 | 摸丰满大乳奶水www免费 | 成人在线手机视频 | 鸥美一级片 | 素人fc2av清纯18岁 | 波多野结衣绝顶大高潮 | 黄色伊人网 | 天堂在线免费观看视频 | 韩国三级中文字幕hd浴缸戏 | 成人av网页 | 国产做爰全免费的视频软件 | 亚洲国产一区二区三区四区 | 日韩午夜一区 | 一级黄色a毛片 | 国产色婷婷 | 成人久久免费 | 在线播放www| 后入内射欧美99二区视频 | 伊人精品影院 | 久久综合伊人 | 欧美一区二区三区粗大 | porn麻豆 | 奇米影视第4色 | 亚洲色图28p | 成人在线国产 | 五色天婷婷 |