Добавить свойство в ExpandoObject с тем же именем, что и строка
Есть ли способ добавить свойство к ExpandoObject с тем же именем, что и строковое значение?
Например, если у меня есть:
string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();
Я могу создать свойство ProductNumber, например:
obj.ProductNumber = 123;
Но могу ли я создать свойство obj.ProductNumber
на основе строки propName
? Итак, если я не знаю, какое имя свойства будет в расширенном, я могу создать его на основе этого ввода. Если это невозможно в ExpandoObject, любые другие области С#, на которые я должен смотреть?
Ответы
Ответ 1
ExpandoObject реализует IDictionary<string, object>
:
((IDictionary<string, object>)obj)[propName] = propValue
Я не знаю, что вы можете использовать синтаксис индексатора с помощью ссылки dynamic
(т.е. без трансляции), но вы можете попробовать и выяснить.
Ответ 2
Переместите ExpandoObject
в IDictionary<string,object>
, чтобы сделать это:
string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();
var dict = (IDictionary<string,object>)obj;
dict[propName] = 123;