C# 使用与字符串相同的名称向ExpandooObject添加属性
是否有方法将属性添加到与字符串值同名的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中属性的名称,我可以
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;