我有一个填充如下的通用对象:
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元素,因此我必须通过密钥获取值。
如何附上此内容?
答案 0 :(得分:2)
我可以在调试器中看到结果
这是因为调试器正在查看cAdditional
真正在运行时的类型,并能够向您显示其属性/方法。由于编译器只在编译时知道cAdditional
是object
,因此无法绑定到字符串索引器。
您需要将cAdditional
转换为它应该绑定到索引器的类型,或者在运行时使用dynamic
绑定到字符串索引器。
这两种方法都容易受到运行时故障的影响。