2013-11-12 2 views
0

Я родовой объект заселена, как это:Access ключевое значение пары в родовой объект

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

Вы пытались сделать cAdditional динамическим, а не объектом? –

+0

Можете ли вы объявить cAdditional как IDictionary или Ilist ? или даже сделать var cAdditional = ... – ps2goat

ответ

2

I can see the results in debugger

Это потому, что отладчик смотрит на тип, который cAdditionalдействительно находится во время выполнения и в состоянии показать вам свои свойства/методы. Поскольку компилятор знает только во время компиляции, что cAdditional является object, он не может связываться с индексом строки.

Вам необходимо указать cAdditional на тип, который предполагается связать с индексом, или использовать dynamic для привязки к индексу индекса во время выполнения.

Любой метод восприимчив к сбою во время выполнения.

Смежные вопросы