无法将Object类型转换为同属性自定义Info类的问题求助
解决方案
根据报错信息和调试观察,objectValue的实际类型是List<object>,而非你定义的Info类或List<Info>,所以直接强转会失败。你可以按以下步骤提取数据并转换为Info对象:
- 先将
objectValue显式转换为List<object> - 分别提取列表中的两个元素,转换为对应类型后赋值给
Info实例
代码实现
// 先将objectValue转为List<object> var objectList = objectValue as List<object>; if (objectList != null && objectList.Count >= 2) { // 提取第一个元素并转为string var valueStr = objectList[0] as string; // 提取第二个元素并转为List<long> var longList = objectList[1] as List<long>; // 实例化Info并赋值 var info = new Info { Value = valueStr, List = longList }; }
补充说明
- 之前强转
Info或List<Info>失败的核心原因:ExpandoObject中对应键的值本质是一个包含两个不同类型元素的object列表,和你定义的Info类没有继承或兼容关系,无法直接强制转换。 - 使用
as转换可以避免类型不匹配时抛出异常,增加空值和元素数量判断能提升代码健壮性。
内容的提问来源于stack exchange,提问作者anthino12
相关产品推荐
相关产品推荐

