如何在此方案中创建动态属性

时间:2011-06-17 08:48:53

标签: c#

我有一个包含动态数据的列表。即

list[0].id=0;
list[1].id=1;
list[2].id=2;

我想创建一个具有动态属性名称的类 即

for(int i=0;i<list.count;i++)
{
    //create dynamic class with dynamic property name
    new {id+i=list[i].id} //this statement throws compilation error. 
}

这种方法的替代方法是什么?

1 个答案:

答案 0 :(得分:1)

在编译时而不是运行时构建Anonymous类时,你无法做到这一点。您需要使用ExpandoObject类

dynamic expando = new ExpandoObject();
var p = expando as IDictionary<String, object>;

for(int i=0;i<list.count;i++)
{
     p[id+i] = list[i].id;
}

//do something with the expando object

这是基于Jani在评论中所附的帖子。