c# - 如何从 OkObjectResult 获取动态属性
问题描述
我IActionResult
从控制器方法返回匿名对象的值。
怎样才能再次取出数据?
这是简化为问题的控制器方法:
[HttpPost]
public async Task<IActionResult> UploadFile(IFormFile file)
{
long size = file.Length;
return Ok(new { count = 1, size });
}
然后我得到.Value
属性,它是 anobject
和 make it 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:“对象”不包含“计数”的定义
解决方案
尝试反射:
var count = (int)okResult.Value.GetType().GetProperty("count").GetValue(okResult.Value);
推荐阅读
- bash - 如何根据ansible上相同变量参数的不同值执行不同的shell命令?
- audio - Raspberry Pi 3 B+ 麦克风和扬声器声音设置不起作用
- list - 按键搜索关联列表
- c - 可执行文件在启动时显示“第 1 行:ELF:未找到”
- node.js - 如何在不覆盖配置的情况下执行 sequelize-cli
- c++ - 返回派生模板类作为基类指针
- shell - 查找两个字符的字母/数字的所有组合,类似于数字的 jot(1)
- css - SCSS for Loops - 生成更短/组合的代码
- django - AWS EC2 上的 Django 应用程序不返回特定计算机的数据
- typescript - 如何从“类”中实例化“T”
`方法?