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

C# 使用与字符串相同的名称向ExpandooObject添加属性,c#,dynamic,expandoobject,C#,Dynamic,Expandoobject,是否有方法将属性添加到与字符串值同名的ExpandooObject 例如,如果我有: string propName = "ProductNumber"; dynamic obj = new System.Dynamic.ExpandoObject(); 我可以创建属性ProductNumber,如下所示: obj.ProductNumber = 123; 但是,我可以基于字符串propName创建属性obj.ProductNumber?因此,如果我不知道advanced中属性的名称,我可以

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

例如,如果我有:

string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();
我可以创建属性ProductNumber,如下所示:

obj.ProductNumber = 123;

但是,我可以基于字符串
propName
创建属性
obj.ProductNumber
?因此,如果我不知道advanced中属性的名称,我可以基于此输入创建它。如果ExpandoObject无法实现这一点,我应该研究C#的任何其他方面。

ExpandoObject实现了
IDictionary

((IDictionary)obj)[propName]=propValue

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

扩展对象
强制转换为
IDictionary
,以实现以下目的:

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

+1至少要提到
ExpandoObject
IDictionary
下面。您不能像在第一个示例中那样为ExpandooObject编制索引第二个示例很好。第一个示例给出了
无法将带[]的索引应用于“System.Dynamic.ExpandoObject”类型的表达式
@Paul谢谢--我忘记了索引器是一个显式接口实现。答案已编辑。@VBRonPaulFan是的,我忘记了接口实现是显式的。我已经编辑了答案。伙计,我很高兴我找到了这篇文章。我正准备从其他教程中实现一些DynamicObject的对象,只是为了获得这个功能。生命和时间的节约谢谢!!:D此处可找到上述实际用途的可能副本:
string propName = "ProductNumber";
dynamic obj = new System.Dynamic.ExpandoObject();
var dict = (IDictionary<string,object>)obj;
dict[propName] = 123;