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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OneOfT1,…,Tn清新

發布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OneOfT1,…,Tn清新 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OneOf——其中之一,這是一個泛型類,意思就是這里泛型中的任何一個類都可以,還是看代碼吧。

引入包

install-package?OneOf

實現一個產品查詢,有三種情況,查詢到返回;查詢不到;查詢出錯。

[ApiController][Route("[controller]")]public class HomeController : ControllerBase{private readonly ILogger<HomeController> _logger;public HomeController(ILogger<HomeController> logger){_logger = logger;}[HttpGet("/product/{id}")]public IActionResult Get(int id){OneOf<Product, NotFound, SystemError> result = GetProject(id);return result.Match<IActionResult>(product =>{_logger.LogInformation("查詢成功");return new JsonResult(product);},notfound =>{_logger.LogInformation("沒有查到");return new NotFoundResult();},systemerror =>{_logger.LogError("查詢成敗");return new StatusCodeResult(500);});}/// <summary>/// 按ID查詢產品,有三種返回類型,找到產品返回;按ID查詢不到;查詢過程發生錯誤/// </summary>/// <param name="id"></param>public OneOf<Product, NotFound, SystemError> GetProject(int id){try{//這里實現真實查庫var num = RandomNumberGenerator.GetInt32(1, 10);if (num % 3 == 0){return new NotFound();}else{return new Product() { ID = id, Name = "手機" };}}catch (Exception exc){_logger.LogCritical(exc, exc.Message);return new SystemError();}}}public class NotFound{}public class SystemError{}public class Product{public int ID { get; set; }public string Name { get; set; }}

可以看到,NotFound,SystemError,Product三個類是沒有任何關系的,是獨立的類,這里通過OneOf<>,來實現返回任何類型都可以,按照OOP的思路,需要三個類繼承一個父類來實現,現在用OneOf<>,把這種繼承“解耦”了。

總結

以上是生活随笔為你收集整理的OneOfT1,…,Tn清新的全部內容,希望文章能夠幫你解決所遇到的問題。

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