如何创建动态属性

时间:2014-05-19 16:16:29

标签: c# reflection runtime expandoobject

我正在阅读一个包含如下元素的xml:

<xs:element name="id" type="xs:int" minOccurs="0"></xs:element>
<xs:element name="name" type="xs:string" minOccurs="0"></xs:element>

通过使用ExpandoObject,我们可以创建一个动态对象,并可以创建像

这样的属性
dynamic obj1 = new ExpandoObject();
obj1.id = 1;
obj1.name = "Shrikey";

其中id和name分别被类型化为int和string。

但我感兴趣的是我是否可以根据元素的name属性中的内容动态创建“属性名称”。

希望我明白我的问题。

有关如何使用ExpandoObject或任何其他方式完成任何建议。

1 个答案:

答案 0 :(得分:4)

您可以将ExpandoObject强制转换为表示属性值到属性值的映射的IDictionary<string,object>,然后操纵这些映射:

IDictionary<string,object> expando = new ExpandoObject();
expando.Add("id", 1);