Я пытаюсь использовать DynamicObject в c #, и мне нужен массив динамических:
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
}
Ошибка: «объект» не содержит определения для «имени». Я предполагаю, что просто инициализирую элементы массива неправильно. Как добавить динамические объекты вместо этого?
РЕДАКТИРОВАТЬ: Новый контент:
Я понимаю, что у "dynamic" нет возможности динамически добавлять свойства.
Лучше использовать ExpandoObject, который выставляет все элементы во внутреннем словаре в качестве свойств. Но, к сожалению, ExpandoObject, похоже, не поддерживает этот красивый сжатый синтаксис create, и компилятор жалуется:
var d = new ExpandoObject[]{
new ExpandoObject(){
Name="Nnn",
Number=1080
}
}
Так что ответ может быть просто: это невозможно.