将属性添加到ExpandoObject,其名称与字符串相同

有没有办法将属性添加到与字符串值同名的ExpandoObject?

例如,如果我有:

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

我可以创建属性ProductNumber,如:

 obj.ProductNumber = 123; 

但是,我可以根据字符串propName创建属性obj.ProductNumber吗? 所以,如果我不知道该属性的名称将是什么,我可以根据此输入创建它。 如果使用ExpandoObject无法做到这一点,那么我应该研究C#的其他任何领域?

ExpandoObject实现IDictionary

 ((IDictionary)obj)[propName] = propValue 

我不知道你是否可以使用dynamic引用的索引器语法(即没有强制转换),但你可以尝试并找出答案。

ExpandoObject强制转换为IDictionary来执行此操作:

 string propName = "ProductNumber"; dynamic obj = new System.Dynamic.ExpandoObject(); var dict = (IDictionary)obj; dict[propName] = 123;