【问题标题】:OkObjectResult to Model type conversionOkObjectResult 到 Model 类型转换
【发布时间】:2021-11-14 17:10:59
【问题描述】:

在我的项目中,我遇到了 get 方法的返回类型为 OkObjectResult

的情况
public IActionResult GetById(int Id)
{
...
return Ok(returnObj);
}

我必须在另一个地方调用它并将其转换为该方法的模型类型。

public IActionResult AnotherMethod(int Id)
{
    ...
    var data = (Model)GetById(Id); //casting
    return Ok(returnObj);
}

我使用了 casting,但它在输出中显示错误 无法将类型“Microsoft.AspNetCore.Mvc.OkObjectResult”的对象转换为类型“Entities.Model” .

是否可以以某种方式将其转换为模型类型?

【问题讨论】:

  • 为什么不把 GetById() 的内容(减去 return Ok())放到一个函数中,然后从两者中调用呢?
  • @juunas 实际上,我想重用 GetById(int Id) 而不是创建另一个函数来避免复杂性并一次又一次地编写相同的东西。有没有办法转换它?
  • 你能告诉我你想在AnotherMethod中返回哪个结果,你想得到OK结果的模型并在另一个方法中使用它吗? ?
  • @BrandoZhang 我需要在 GetById(int Id) 中使用过的 Model 类型,我将在 AnotherMethod(int Id) 方法的一个地方使用该 Model 类型。 AnotherMethod(int Id) 也将返回 OkObjectResult

标签: asp.net-core casting type-conversion asp.net-core-webapi


【解决方案1】:

根据您的描述,我建议您可以使用 ObjectResult.Value 来获取 OK 对象结果。

更多细节,你可以参考下面的测试演示:

    public IActionResult GetById()
    {
        var re = new List<Projects>() { new Projects { projectID=1, projectMagName="1", projectName="aaa" }, new Projects { projectID=2, projectName="2", projectMagName="bbb" } ,
            new Projects { projectID=3, projectMagName="ccc", projectName="ccc" } };

        return Ok(re);
    }

获取它的值:

      var result=  GetById();
        var re1 = (List<Projects>)((ObjectResult)result).Value;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2019-08-19
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多