Я изо всех сил пытаюсь понять, как сделать компилятор счастливым, когда учитываются как счастливые, так и печальные сценарии пути ActionResult.
Я думал, что смогу сделать следующее:
[<HttpGet>]
member x.GetQuery([<FromQuery>] restaurant:string) =
restaurant
|> Name
|> Query.menu
|> function
| Error _ -> (x.StatusCode 500) :> IActionResult
| Ok v -> ActionResult<DataTransfer.MenuItemTypes>(v) :> IActionResult
Однако я получаю следующую ошибку:
Ошибка FS0193 Несоответствие ограничения типа. Тип
'ActionResult' не совместим с типом
'IActionResult'
Я могу получить код для компиляции, если я сделаю это:
[<HttpGet>]
member x.GetQuery([<FromQuery>] restaurant:string) =
restaurant
|> Name
|> Query.menu
|> function
| Error _ -> failwith "Internal Server Error"
| Ok v -> ActionResult<DataTransfer.MenuItemTypes>(v)
Однако я не хочу выдавать исключение только для того, чтобы вернуть код состояния.