例如,我正在尝试创建五个匿名对象以放入List
,但我想以不同的方式命名属性,这可能吗?'
List<dynamic> myObjects = new List<dynamic>();
for(int i=0;i<5;i++)
{
//do this
var obj = new { Prop+i = "some value" };
//or
obj."somehow change property name here";
myObjects.Add(obj);
}
因此,我的属性将命名为:Prop0,Prop1,Prop2,Prop3,Prop4
答案 0 :(得分:3)
您可以使用ExpandoObject执行此操作:
List<dynamic> myObjects = new List<dynamic>();
for (int i = 0; i < 5; i++)
{
dynamic obj = new ExpandoObject();
obj.MyProperty = "some value";
obj.ChangePropertyName = "change property name";
myObjects.Add(obj);
}
但我不知道它是否对你有所帮助:)。
答案 1 :(得分:3)
正如后面提到的ExpandoObject
可以解答您的问题,通过将ExpandoObject
转换为IDictionary<string, object>
,您可以将字典键视为属性名称:
List<dynamic> myObjects = new List<dynamic>();
for(int i=0;i<5;i++)
{
dynamic obj = new ExpandoObject();
//Add prop i property
(obj as IDictionary<string, object>).Add("Prop"+i, "some value");
//Remove prop i property
(obj as IDictionary<string, object>).Remove("Prop"+i);
//Add instead new property
(obj as IDictionary<string, object>).Add("NewProp"+i, "some value");
myObjects.Add(obj);
}