Я ищу способ динамического добавления членов к динамическому объекту. Хорошо, я думаю, что нужно немного пояснений ...
Когда вы делаете это:
dynamic foo = new ExpandoObject();
foo.Bar = 42;
Свойство Bar
будет добавлено динамически во время выполнения. Но код все еще ссылается «статически» на Bar (имя «Bar» жестко запрограммировано) ... Что если я хочу добавить свойство во время выполнения, не зная его имени во время компиляции?
Я знаю, как это сделать с помощью настраиваемого динамического объекта (я действительно писал об этом несколько месяцев назад), используя методы класса DynamicObject
, но как я могу это сделать с любой динамический объект?
Возможно, я мог бы использовать IDynamicMetaObjectProvider
интерфейс, но я не понимаю, как его использовать. Например, какой аргумент я должен передать методу GetMetaObject
? (ожидается Expression
)
И, кстати, как вы выполняете отражение на динамических объектах? «Обычное» отражение и TypeDescriptor
не показывают динамические элементы ...
Любое понимание будет оценено!