【.NET 6】使用.NET 6開發minimal api以及依賴注入的實現、VS2022熱重載和自動反編譯功能的演示


 

前言:

.net 6 LTS版本發布已經有若干天了。此處做一個關於使用.net 6 開發精簡版webapiminimal api)的入門教程,以及VS2022 上面的兩個強大的新技能(熱重載、代碼自動反編譯)的順帶演示。

 

1、新建一個項目。此處就命名為 SomeExample:

 

 

 

 

2、選擇 .net6版本,並且此處先去掉HTTPS配置以及去掉使用控制器的選項:

 

 

 

 

3、創建完成以后,原始畫面如下所示。並且,解決方案一欄只剩下program文件,其他文件都被精簡掉了。並且沒有Main函數入口和命名空間等。

 

 

 

 

4、接下來開始做幾個簡單的webapi方法案例。先刪掉原有的,替換為自定義的來個webapi方法,一個Get,一個Post。具體代碼如下圖所示。

 

 

 

 

5、運行以后,會打開自帶的swagger頁面。大佬們可以自行比對代碼部分和swagger部分的一些特點。

 

 

 

 

6、執行HelloWorld這個Get方法的執行結果,如下圖所示。

 

 

 

 

7、執行HelloMiniApi這個Post方法的執行結果,如下圖所示。

 

 

 

 

 

8Api根據不同的用途,在swagger展示上面,咱們還可以對它進行一些分類。分類通過設置Tags標簽來實現,具體設置內容:在方法的末尾設置WithTags,里面指定分類的顯示的名稱。運行以后的swagger展示效果和有關代碼,如下圖所示。

 

 

 

 

9、對api方法進行分代碼文件管理。如果API方法很多,全寫在program里面也不現實。所以下面做個拓展。新建用於測試使用的靜態類 TestService,並且實現一個靜態方法 TestApi。其中,方法的參數必須是 this WebApplication。然后就可以通過傳入的參數,來拓展實現webapi,例如此處新增一個ServiceApi的api方法,以及有關其他實現,如下圖所示。

 

 

 

10、新增拓展的api以后,需要在program文件里面引用使用,詳細內容如下圖所示。

 

 

 

 

11、運行以后的swagger展示圖。

 

 

 

 

12、測試下執行結果,返回預期結果,說明測試成功。

 

 

 

 

13、測試下VS 2022熱重載的功能,在返回值里面進行修改,然后點擊熱重載小火苗按鈕進行熱更新。

 

 

 

 

14、熱更新以后,不需要重新編譯,直接在swagger展示頁對剛才設置的api方法進行調用,調用結果如下圖所示,說明熱重載更新成功。將來遇到需要調試的代碼時候,大佬們都可以很方便地進行熱更新,無需重新編譯,可以大大提高效率。

 

 

 

 

15、接下來是依賴注入的驗證測試。新增一個測試服務類 TestDependencyInjection,具體實現內容如圖所示。

 

 

 

 

16TestDependencyInjection對應的接口 ITestDependencyInjection內容:

 

 

 

 

17、在program文件里面,對上面的服務進行注冊。此處注冊一個單例實例,具體代碼如下圖展示。

 

 

 

 

18、接下來是驗證依賴注入是否成功。此處我在ServiceApi這個webapi方法里面進行注入。注入需要注意事項:在webapi方法的委托類型的參數里面,第一個參數必須是HttpContext;然后后面是自己的參數,此處是注入服務的接口。並且在api方法里面調用了show方法進行驗證。

 

 

 

 

19、運行程序,在swagger展示頁面點擊執行對應的webapi方法,並查看結果。如下圖所示,輸出show方法里面的內容,代表依賴注入成功。

 

 

 

 

20、再擴展個VS2022的隱藏技能:引用的第三方或者nuget包時候(不限制.net 版本),在對應的封裝的類或者方法上面,按F12,可以直接進入到反編譯以后的代碼里面去,可以看到封裝的源碼。例如此處以UseSwagger為例,在此處按F12進去瞅瞅究竟。

 

 

 

 

21、正常情況下咱們應該F12進去只能看見屬性名稱、方法名稱,看不到具體實現。而現在是可以看到具體實現的代碼的。如下圖所示,方法里面的具體代碼都有,也可以繼續進一步F12去看底層的代碼。

 

 

 

 

以上就是該篇博客的全部內容,歡迎大佬們留言、推薦或點贊,或者一起談人生。祝各位大佬們,玩.net 6玩的開心~~

本文鏈接:https://www.cnblogs.com/weskynet/p/15626899.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM