我从控制器方法返回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:“对象”不包含“计数”的定义
答案 0 :(得分:2)
尝试反思:
var count = (int)okResult.Value.GetType().GetProperty("count").GetValue(okResult.Value);