提问人:push 22 提问时间:6/3/2020 更新时间:6/3/2020 访问量:168
如何访问匿名类型的字段?
How do I get to a field of an anonymous type?
问:
我正在尝试弄清楚如何从我的 WebApi 控制器获取匿名返回值,它执行如下操作:
public IActionResult Get() {
using var db = DbDataContextFactory.Make();
return Ok(new {
feedTypes = db.GetStatisticsAllFeeds()
});
}
...
IDictionary<string, ExpandoObject> GetStatisticsAllFeeds(this DbDataContext db) {}
出于兴趣,我想调用控制器获取并查看返回的数据,很容易,对吧?
如果我这样做:
... instantiate controller ...
IActionResult actionResult = sut.Get();
var okObjectResult = actionResult as OkObjectResult;
dynamic anon = okObjectResult.Value;
我可以看到 anon 对象在调试器中有一个名为“feedTypes”的字段
如果我这样做:
Type type = anon.GetType();
var fields = type.GetProperties();
foreach (var field in fields) {
string name = field.Name;
var temp = field.GetValue(anon, null);
Console.WriteLine(name + " " + temp);
}
我可以看到 anon 对象有一个 feedTypes 字段。
但是如果我这样做
var ft = anon.feedTypes;
我得到异常
System.Linq.Expressions.dll 中发生类型为“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”的异常,但未在用户代码中处理:“对象”不包含“feedTypes”的定义
我怎样才能到达实际的领域,例如
IDictionary dict = anon.饲料类型 ...这里有什么?
TIA。
答: 暂无答案
评论
Type type = anon.GetType()