当集合中存在成员时,动态对象抛出 'does not contain definition for...' 异常
Dynamic object throwing 'does not contain definition for...' exception when member exists in collection
我对这段代码有疑问:
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
时出现此异常,即使我已确认项目对象确实具有 Id
和 Name
成员(见下图) .
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:
''System.Dynamic.ExpandoObject' does not contain a definition for 'Id''
我做错了什么?
我已经找到导致问题的原因,但它很奇怪。
该代码是 Xamarin.Android 应用程序的一部分,自从我开始处理该项目以来,IDE 中的异常设置对我来说很奇怪,因为所有异常都已 'Break when this exception happens' 禁用。昨天(因为我厌倦了翻阅文件以查找抛出异常的位置)我启用了该复选框以查看在运行时抛出异常的位置以及异常详细信息。
当我在没有调试的情况下启动应用程序并且它确实有效时,我得到了启发(尽管仍然抛出异常)。然后我想起了我昨天做了什么,并在 IDE 中恢复了异常设置,TA DAAA,它起作用了。
我猜想这与 Xamarin 及其处理异常的方式有关。如果有人可以详细说明这种行为,我将很乐意接受 his/her 回答
我对这段代码有疑问:
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
时出现此异常,即使我已确认项目对象确实具有 Id
和 Name
成员(见下图) .
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:
''System.Dynamic.ExpandoObject' does not contain a definition for 'Id''
我做错了什么?
我已经找到导致问题的原因,但它很奇怪。
该代码是 Xamarin.Android 应用程序的一部分,自从我开始处理该项目以来,IDE 中的异常设置对我来说很奇怪,因为所有异常都已 'Break when this exception happens' 禁用。昨天(因为我厌倦了翻阅文件以查找抛出异常的位置)我启用了该复选框以查看在运行时抛出异常的位置以及异常详细信息。
当我在没有调试的情况下启动应用程序并且它确实有效时,我得到了启发(尽管仍然抛出异常)。然后我想起了我昨天做了什么,并在 IDE 中恢复了异常设置,TA DAAA,它起作用了。
我猜想这与 Xamarin 及其处理异常的方式有关。如果有人可以详细说明这种行为,我将很乐意接受 his/her 回答