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

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;

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

最佳答案

只需使用它实现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>可能也很有意义。

10-08 08:02