0

我对这段代码有疑问:

IList<dynamic> list = await GetApiUrl("EndpointName").GetJsonListAsync(); // Call to API using FLUrl

List<Model> modelList = new List<Model>();
foreach(var item in list) 
{
    var model = new Model() 
    {
        GuidId = new Guid(item.Id),
        Name = item.Name
    }

    modelList.Add(model);
}

public class Model 
{
    public Guid GuidId { get; set; }
    public string Name { get; set; }
}

示例 API 响应:

[
    {
        "Id": "9232f70b-bdc6-402c-9fab-250977e9a0c1",
        "Name": "Sample name"
    },
    {
        "Id": "0f746670-e057-4c13-9a82-c98419d09e55",
        "Name": "Sample name"
    },
    {
        "Id": "370cce64-37f6-4e71-a44e-32168c3ef2cb",
        "Name": "Sample name"
    }
]

item.Id访问时或item.Name即使我已确认 item 对象确实具有Id和成员,我也会收到此异常Name(请参见下图)。

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 
''System.Dynamic.ExpandoObject' does not contain a definition for 'Id''

在此处输入图像描述

我在这里做错了什么?

4

1 回答 1

-1

我找到了导致问题的原因,但它相当奇怪。

该代码是 Xamarin.Android 应用程序的一部分,自从我开始从事该项目以来,IDE 中的异常设置对我来说很奇怪,因为所有异常都禁用了“发生此异常时中断”。昨天(因为我厌倦了通过文件挖掘来查找引发异常的位置)我启用了该复选框,以便查看在运行时引发异常的位置以及异常详细信息。

当我在没有调试的情况下启动应用程序并且它确实有效(尽管仍然抛出异常)时,我有一个启示。然后我想起了我昨天做了什么,并在 IDE 中恢复了异常设置,TA DAAA,它起作用了。

我想这与 Xamarin 及其处理异常的方式有关。如果有人可以详细说明这种行为,我将很乐意接受他/她的回答

于 2020-07-09T14:04:36.087 回答