Я пытаюсь использовать DynamicObject в C #, и мне нужен массив dynamic:
var d = new dynamic[];
, который отлично работает.
РЕДАКТИРОВАТЬ: см. ExpandoObject ниже.
Но мне также нравится заполнять этот массив некоторыми данными с помощью этого сжатого синтаксиса инициализации:
var d = new dynamic[] {
new {
Name = "Some",
Number = 1010
},
new {
Name = "Other",
Number = 2010
}
}
Но в этом случае все объекты получают нединамический тип «объект» и цикл по элементам выдаст мне исключение:
foreach (dynamic item in d)
{
@item.Name
@item.Number
}
Ошибка: «объект» не содержит определения для «Имя». Думаю, я просто неправильно инициализировал элементы массива. Как вместо этого добавить динамические объекты?
РЕДАКТИРОВАТЬ: Новое содержимое:
Я понимаю, что «динамический» не имеет возможности динамически добавлять свойства.
Мне лучше использовать ExpandoObject, который предоставляет все элементы во внутреннем словаре как свойства. Но, к сожалению, ExpandoObject, похоже, не поддерживает этот красивый синтаксис сжатого создания, и компилятор жалуется:
var d = new ExpandoObject[]{
new ExpandoObject(){
Name="Nnn",
Number=1080
}
}
Так что ответ может быть таким: это невозможно.