有没有办法在之后更改 属性 名称? (C#)
Is there a way to change property name afterwards? (c#)
例如,我正在尝试创建五个匿名对象以放入 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
您可以使用 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);
}
不过不知道对你有没有帮助:)
正如 Backs 提到的 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);
}
例如,我正在尝试创建五个匿名对象以放入 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
您可以使用 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);
}
不过不知道对你有没有帮助:)
正如 Backs 提到的 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);
}