Массив динамических | ExpandoObject | со сжатым синтаксисом инициализации

Я пытаюсь использовать 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
    }
}

Так что ответ может быть таким: это невозможно.

9
задан Darin Dimitrov 28 January 2011 в 08:13
поделиться