C# 是否可以使用ExpandooObject创建运行时属性?

C# 是否可以使用ExpandooObject创建运行时属性?,c#,dynamic,expandoobject,C#,Dynamic,Expandoobject,通常,我们可以创建这样的属性 dynamic expando = new ExpandoObject(); expando.Price = 45k; expando.Value = "Good"; 在我的例子中,直到运行时我才知道诸如“Price”或“Value”之类的属性。如何创建这样的动态属性。大概 dynamic expando = new ExpandoObject(); expando[properties[0]] = 45k; expando[properties[1]] = "G

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

dynamic expando = new ExpandoObject();
expando.Price = 45k;
expando.Value = "Good";
在我的例子中,直到运行时我才知道诸如“Price”或“Value”之类的属性。如何创建这样的动态属性。大概

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

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

只要利用它实现了
IDictionary

IDictionary expando=new ExpandoObject();
expando[properties[0]]=45;
expando[properties[1]]=“良好”;
expando[properties[2]]=“红色”;
expando[properties[3]]=8;
动态d=expando;
//现在,将属性用作常规属性

另一方面,如果直到执行时才知道属性,那么实际将消耗它们的是什么?使用
ExpandoObject
可能仍然有意义,但同样地,从使用
字典开始也可能有意义。

谢谢您的建议。我有一个AdomdDataReader对象。由于没有网格控件支持将AdomdData对象绑定为ItemsSource,因此我想从ADR生成一个更轻的可枚举源。为此,我研究了动态,因为大多数网格控件都支持动态绑定。再次感谢。+1,特别是指出在这种情况下使用ExpandoObject可能很愚蠢。当前正在重构我的代码,以使用普通字典代替。:)可能重复的
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