如何从OkObjectResult获取动态属性

时间:2019-04-16 06:43:13

标签: c# anonymous-class

我从控制器方法返回IActionResult并带有匿名对象的值。
如何再次获取数据?

这是将控制器方法简化为非常问题的方法:

[HttpPost]
public async Task<IActionResult> UploadFile(IFormFile file)
{
    long size = file.Length;
    return Ok(new { count = 1, size });
}

然后我得到.Value属性,它是一个object,并将其设置为dynamic
但是不,它无法识别。

[Fact]
public async Task UploadFileTest()
{
    //  #   Given.
    var formFile = new Mock<IFormFile>();
    var sut = new HomeController(null);

    //  #   When.
    IActionResult result = await sut.UploadFile(formFile.Object);

    //  #   Then.
    OkObjectResult okResult = (OkObjectResult)result; // Ok.
    dynamic dynValue = okResult.Value; // Ok.
    var count = dynValue.count; // Not ok.
}

预期结果:

count应该为1。

实际结果:

  

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:“对象”不包含“计数”的定义

1 个答案:

答案 0 :(得分:2)

尝试反思:

var count = (int)okResult.Value.GetType().GetProperty("count").GetValue(okResult.Value);