0

我正在尝试弄清楚如何从我的 WebApi 控制器获取匿名返回值,它执行以下操作:

public IActionResult Get() {
    using var db = DbDataContextFactory.Make();
    return Ok(new {
        feedTypes = db.GetStatisticsAllFeeds()
    });
}
...
IDictionary<string, ExpandoObject> GetStatisticsAllFeeds(this DbDataContext db) {}

出于兴趣,我想调用 Controllers Get 并查看返回的数据,很简单吧?

如果我这样做:

... 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.FeedTypes ...这里发生了什么?

TIA。

4

0 回答 0