Подтвердить что ты не робот

Добавить свойство в ExpandoObject с тем же именем, что и строка

Есть ли способ добавить свойство к ExpandoObject с тем же именем, что и строковое значение?

Например, если у меня есть:

string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();

Я могу создать свойство ProductNumber, например:

obj.ProductNumber = 123;

Но могу ли я создать свойство obj.ProductNumber на основе строки propName? Итак, если я не знаю, какое имя свойства будет в расширенном, я могу создать его на основе этого ввода. Если это невозможно в ExpandoObject, любые другие области С#, на которые я должен смотреть?

4b9b3361

Ответ 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;