是否可以使用ExpandoObject创建运行时属性?

时间:2011-03-15 11:07:27

标签: c# dynamic expando

通常,我们可以创建这样的属性,

dynamic expando = new ExpandoObject();
expando.Price = 45k;
expando.Value = "Good";

在我的情况下,直到运行时我才会知道诸如“价格”或“价值”之类的属性。如何,我可以创建这样的动态属性。像,

dynamic expando = new ExpandoObject();
expando[properties[0]] = 45k;
expando[properties[1]] = "Good";
expando[properties[2]] = "Red";
expando[properties[3]] = 8;

无论如何要实现这种行为。

1 个答案:

答案 0 :(得分:20)

只需使用它实现IDictionary<string, Object>

的事实
IDictionary<string, Object> expando = new ExpandoObject();
expando[properties[0]] = 45;
expando[properties[1]] = "Good";
expando[properties[2]] = "Red";
expando[properties[3]] = 8;

dynamic d = expando;
// Now use the properties as normal

另一方面,如果你在执行时间之前不知道属性,实际上会消耗它们的是什么? 可能仍然有意义使用ExpandoObject - 但同样可能使用Dictionary<string, object>开始是有道理的。