как добавить элемент в объект, инициализированный с помощью {blah = "asdf"} - PullRequest
4 голосов
/ 21 апреля 2011

как добавить элемент к объекту, инициализированному с помощью:

object obj = new { blah = "asdf" };

Если я хочу добавить другую пару ключ-значение, как бы я?

Ответы [ 3 ]

10 голосов
/ 21 апреля 2011

Вы не можете изменить определение анонимного типа объекта после создания объекта с использованием этого синтаксиса инициализатора.То есть, как только вы инициализируете его с { blah = "asdf" }, у него будет только это свойство blah.Вы не можете добавить еще один.Это связано с тем, что анонимные типы являются статическими типами.

Ответы ExpandoObject работают для объекта dynamic.Посмотрите другие ответы для этого.

Если вы действительно просто пытаетесь управлять набором пар ключ-значение (вроде как на основе того, как вы сформулировали свой вопрос), используйте словарь.1012 *

7 голосов
/ 21 апреля 2011

@ BoltClock прямо на. Другой альтернативой является использование ExpandoObject при потере intellisense.

dynamic obj = new ExpandoObject();
obj.blah = "asdf";

// sometime later

obj.somethingelse = "dfgh";

// obj now has 'blah' and 'somethingelse' 'properties'
6 голосов
/ 21 апреля 2011

Как только вы определили такой объект, все готово. Вы ничего не можете добавить к этому.

Если вы используете C # 4.0, вы всегда можете использовать динамический тип:

dynamic obj = new ExpandoObject();

obj.blah = "asdf";
obj.blahBlah = "jkl;";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...