Как добавить элемент в объект, инициализированный с помощью { blah = "asdf" }
Как добавить элемент в объект, инициализированный с помощью:
object obj = new { blah = "asdf" };
Если я хочу добавить еще одну пару ключ-значение, как бы я?
3 ответа
Вы не можете изменить определение анонимного типа объекта после создания объекта с использованием этого синтаксиса инициализатора. То есть, как только вы инициализируете его { blah = "asdf" }
, только blah
имущество. Вы не можете добавить еще один. Это потому, что анонимные типы являются статическими типами.
ExpandoObject
ответы работают, хотя, для dynamic
объект. Смотрите другие ответы для этого.
Если вы действительно пытаетесь управлять набором пар ключ-значение (вроде как в зависимости от того, как вы сформулировали свой вопрос), используйте словарь.
var kvp = new Dictionary<string, string>
{
{ "blah", "asdf" }
};
kvp.Add("womp", "zxcv");
@BoltClock прямо сейчас. Другой альтернативой является использование ExpandoObject при потере intellisense.
dynamic obj = new ExpandoObject();
obj.blah = "asdf";
// sometime later
obj.somethingelse = "dfgh";
// obj now has 'blah' and 'somethingelse' 'properties'
Как только вы определили такой объект, все готово. Вы не можете ничего добавить к этому.
Если вы используете C# 4.0, вы всегда можете использовать динамический тип:
dynamic obj = new ExpandoObject();
obj.blah = "asdf";
obj.blahBlah = "jkl;";