0

我有一个这样填充的通用对象:

object cAdditional;

cAdditional = defaultCols.ContainsKey(colType + "adtlParams") && defaultCols[colType + "adtlParams"] != ""
              ? serializer.Deserialize<object>(defaultCols[colType + "adtlParams"])
              : null;

我不知道将返回哪些元素(如果有),但可以在调试器中看到这样的结果:

在此处输入图像描述

如果我尝试像这样 cAdditional[0] 访问对象,我会收到错误消息:Cannot apply indexing with [] to an expression of type 'object'

我有一个需要密钥的类(summaryType在这个例子中)所以我想做这样的事情:

var colMod = new ColModel
                 {
                    summaryType = cAdditional["summaryType"]
                    summaryTpl = cAdditional["summaryTpl"]
                 };

我什至看不到访问任何键/值,更不用说指定哪个了。

此外,不能保证summaryType会是 0 元素,所以我必须通过键获取值。

我如何附上这个?

4

1 回答 1

2

我可以在调试器中看到结果

那是因为调试器正在查看cAdditional 真正在运行时的类型,并且能够向您显示它的属性/方法。由于编译器仅在编译时才知道cAdditionalobject不能绑定到字符串索引器。

您需要强制cAdditional转换为它应该绑定到索引器的类型,或者dynamic在运行时用于绑定到字符串索引器。

任何一种方法都容易受到运行时故障的影响。

于 2013-11-12T23:19:55.523 回答