Я ищу способ динамически добавлять участников в динамический объект. Хорошо, я думаю, немного требуется разъяснение ...Динамическое добавление элементов в динамический объект
Когда вы сделаете это:
dynamic foo = new ExpandoObject();
foo.Bar = 42;
Bar
свойство будет добавлено динамически во время выполнения. Но код по-прежнему ссылается «статически» на Bar (имя «Bar» жестко закодировано). Что делать, если я хочу добавить свойство во время выполнения, не зная его имени во время компиляции?
Я знаю, как сделать это с помощью пользовательского динамического объекта (я на самом деле blogged about it несколько месяцев назад), используя методы DynamicObject
класса, но как я могу сделать это с любого динамического объекта?
Возможно, я использовал интерфейс IDynamicMetaObjectProvider
, но я не понимаю, как его использовать. Например, какой аргумент следует передать методу GetMetaObject
? (он ожидает Expression
)
И, кстати, как вы выполняете отражение на динамических объектах? «Регулярное» отражение и TypeDescriptor
не показывают динамические элементы ...
Любое понимание будет оценено!
В C# 6.0, * может быть * вы можете написать его как 'foo. $ Bar = 42;' :) Не уверен, разрешено ли для динамического ... – nawfal
@nawfal, на самом деле эта функция была удалена .. но в любом случае 'foo. $ Bar' является только сокращением для' foo ["Bar"] ' –
Томас, не знал о том, что функция отбрасывается (я рад этому), но о да, на мгновение Я упустил из виду реальное требование вашего q. – nawfal