You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过索引调用嵌套OrderedDictionary内元素的方法

问题原因

OrderedDictionary 属于 .NET 中非泛型的字典集合,所有存入该集合的元素都会被装箱为 object 类型,因此通过索引直接取出的元素默认是 object 类型,本身没有定义 Add/add 方法,该报错和是否缺少程序集引用无关,是没有对取出的元素做显式类型转换导致的。

解决方法

按键名索引访问(推荐,可读性更高)

你需要逐层对取出的元素做类型转换,示例代码如下:

// 逐层转换类型后调用添加方法
var gardeningTools = (OrderedDictionary)toolSystem["Gardening Tools"];
var lineTrimmers = (ToolCollection)gardeningTools["Line Trimmers"];
lineTrimmers.add(newTool);

如果需要写成单行的形式:

((ToolCollection)((OrderedDictionary)toolSystem["Gardening Tools"])["Line Trimmers"]).add(newTool);

按位置索引访问

你提到的toolSystem[0][0]写法也可以实现,同样需要补充类型转换:

((ToolCollection)((OrderedDictionary)toolSystem[0])[0]).add(newTool);
注意事项
  • 建议增加类型校验逻辑,避免类型不匹配时抛出转换异常,更安全的写法如下:
// 用模式匹配做类型校验,避免转换失败
if (toolSystem["Gardening Tools"] is OrderedDictionary gardeningDict)
{
    if (gardeningDict["Line Trimmers"] is ToolCollection lineTrimmers)
    {
        lineTrimmers.add(newTool);
    }
}
  • 注意方法名大小写要和你定义的ToolCollection中的方法保持一致,你定义的添加方法名为小写add,如果调用时写为大写Add也会触发找不到方法的报错。

内容的提问来源于stack exchange,提问作者Clue Less

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 06:24:04