访问通用对象中的键值对

时间:2013-11-12 23:14:24

标签: c# json asp.net-mvc-3 object

我有一个填充如下的通用对象:

object cAdditional;

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

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

enter image description here

如果我尝试像这样的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元素,因此我必须通过密钥获取值。

如何附上此内容?

1 个答案:

答案 0 :(得分:2)

  

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

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

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

这两种方法都容易受到运行时故障的影响。