第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

ASP.NET Core 如何將任何類型轉(zhuǎn)換為控制器操作的 ActionResult<T>

ASP.NET Core 如何將任何類型轉(zhuǎn)換為控制器操作的 ActionResult<T>

C#
繁星點(diǎn)點(diǎn)滴滴 2022-11-22 15:42:43
我在 ASP.NET Core 2.2 的 WebApi 控制器中有一個(gè)簡(jiǎn)單的操作,看起來像這樣:[HttpGet("test123")]public ActionResult<string> Test123(){    return new OkResult();}這編譯得很好,但我想知道OkResult對(duì)象怎么可能被轉(zhuǎn)換成ActionResult<string>?這些類有不同的繼承鏈: OkResult -> StatusCodeResult -> ActionResult 雖然ActionResult<TValue>只是實(shí)現(xiàn)IConvertToActionResult ,換句話說,ActionResult<string>不是OkResult類的基類型。如果我手動(dòng)執(zhí)行此操作并將代碼更改為:[HttpGet("test123")]public ActionResult<string> Test123(){    var a = new OkResult();    var b = a as ActionResult<string>;  // Error CS0039    return b;}代碼不會(huì)因轉(zhuǎn)換錯(cuò)誤而編譯:錯(cuò)誤 CS0039:無(wú)法通過引用轉(zhuǎn)換、裝箱轉(zhuǎn)換、拆箱轉(zhuǎn)換、包裝轉(zhuǎn)換或空類型轉(zhuǎn)換將類型“Microsoft.AspNetCore.Mvc.OkResult”轉(zhuǎn)換為“Microsoft.AspNetCore.Mvc.ActionResult”第一個(gè)代碼工作而第二個(gè)代碼不工作怎么可能?如何從沒有公共基類型的對(duì)象轉(zhuǎn)換返回類型?
查看完整描述

2 回答

?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

以下兩個(gè)隱式運(yùn)算符來自ActionResult<TValue>


/// <summary>

/// Implictly converts the specified <paramref name="value"/> to an <see cref="ActionResult{TValue}"/>.

/// </summary>

/// <param name="value">The value to convert.</param>

public static implicit operator ActionResult<TValue>(TValue value)

{

    return new ActionResult<TValue>(value);

}


/// <summary>

/// Implictly converts the specified <paramref name="result"/> to an <see cref="ActionResult{TValue}"/>.

/// </summary>

/// <param name="result">The <see cref="ActionResult"/>.</param>

public static implicit operator ActionResult<TValue>(ActionResult result)

{

    return new ActionResult<TValue>(result);

}


是什么允許在操作中使用多個(gè)返回類型。


[HttpGet("test123")]

public ActionResult<string> Test123() {

    if(someCondition) return "String value"; //<--String

    return Ok(); //<-- OkResult

}

當(dāng)返回字符串時(shí),ActionResult<TValue>(TValue value)調(diào)用運(yùn)算符,返回ActionResult<TValue>另一個(gè)運(yùn)算符的有效值,反之亦然。

查看完整回答
反對(duì) 回復(fù) 2022-11-22
?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊

您的第一個(gè)示例利用隱式用戶定義類型轉(zhuǎn)換運(yùn)算符,如下所示:


public static implicit operator ActionResult<TValue>(ActionResult result)

{

    return new ActionResult<TValue>(result);

}

您的第二個(gè)示例 usingas無(wú)法使用隱式轉(zhuǎn)換運(yùn)算符,因?yàn)楦鶕?jù)文檔,它:


...僅執(zhí)行引用轉(zhuǎn)換、可空轉(zhuǎn)換和裝箱轉(zhuǎn)換。as 運(yùn)算符不能執(zhí)行其他轉(zhuǎn)換,例如用戶定義的轉(zhuǎn)換,而應(yīng)使用強(qiáng)制轉(zhuǎn)換表達(dá)式來執(zhí)行這些轉(zhuǎn)換。


查看完整回答
反對(duì) 回復(fù) 2022-11-22
  • 2 回答
  • 0 關(guān)注
  • 122 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)