使用与字符串相同的名称向ExpandoObject添加属性

本文关键字:ExpandoObject 添加 属性 字符串 | 更新日期: 2023-09-27 18:30:11

是否有方法将属性添加到与字符串值同名的ExpandoObject?

例如,如果我有:

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

我可以创建属性ProductNumber,如:

obj.ProductNumber = 123;

但是,我可以基于字符串propName创建属性obj.ProductNumber吗?因此,如果我不知道属性的名称在高级中是什么,我可以根据此输入创建它。如果这在ExpandoObject中是不可能的,那么C#的任何其他领域我都应该研究一下?

使用与字符串相同的名称向ExpandoObject添加属性

ExpandoObject实现IDictionary<string, object>:

((IDictionary<string, object>)obj)[propName] = propValue

我不知道是否可以将索引器语法与dynamic引用一起使用(即,不使用强制转换),但您肯定可以尝试并找到答案。

ExpandoObject转换为IDictionary<string,object>以执行此操作:

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