2014-05-20 3 views
0

Я пытаюсь подсчитать динамические свойства ExpandoObject.как считать свойство ExpandoObject

Я попытался

int count = values.ICollection<KeyValuePair<string, Object>>.Count(); 

но он генерирует ошибку.

Любая помощь?

UPDATE:

как я могу прочитать свойство по заданному индексу?

+0

Это не похоже на действительный синтаксис в первую очередь. Какая ошибка вы получаете? Что такое экземпляр динамического объекта ('values')? –

ответ

1

Ваш cast неправ. Вместо

int count = values.ICollection<KeyValuePair<string, Object>>.Count(); 

использование

int count = ((ICollection<KeyValuePair<string, Object>>)values).Count; 

Вы могли бы также бросить свой объект IDictionary<string, object>, то она становится короче:

int count = ((IDictionary<string, object>)values).Count 

Чтобы прочитать свойство в конкретных index, вы можете использовать th е ElementAt extension method:

var valueAt5 = ((IDictionary<string, object>)values).ElementAt(5).Value 
+0

Неверно: граф является членом 'IEnumerable '. Это должно быть «Count», как есть »: D –

+0

@sloth, спасибо. Ваш код работает для меня. –

+0

@ MatíasFidemraizer 'Count' является свойством' ICollection '. Вы говорите о методе расширения 'Count' –

1

ExpandoObject реализует IDictionary<string, object>, таким образом, вы должны привести его к этому интерфейсу, и вы будете иметь возможность получить доступ к IDictionary<TKey, TValue>.Count.