这可能吗?假设您有以下内容:
var x = new { name = "name", age = 22 };
是否可以在此对象中添加或附加属性?因此,在稍后阶段,我可以添加高度以使其{ name = "name", age = 22, height = 1.9 };
。
只需寻找重新制作或在新房产中添加的东西,就不必优雅。
答案 0 :(得分:4)
不,这绝对不可能。匿名类型是不可变的,并且完全由其属性的名称和类型以及它们出现的顺序定义。添加新属性的类型不同。
您可以在匿名类型中执行的最佳操作是创建不同匿名类型的实例:
var y = new { name = x.name, age = x.age, height = 1.9 };
(请注意,name =
和age =
不是必需的;编译器会为您推断它们。)
但实际上,如果您不在.NET 4.0中,您会想要dynamic
或者像Dictionary<string, object>
这样的属性包。
或许,也许,只是可能,这样的具体类型:
public class Person {
public string Name { get; set; }
public int Age { get; set; }
public decimal? Height { get; set; }
}
请注意,height
可以为空。
答案 1 :(得分:2)
为什么不创建一个新的匿名类型?
var x = new { name = "name", age = 22 };
var y = new { x.name, x.age, height = 1.9 };
答案 2 :(得分:1)
也许ExpandoObject可以使用?
dynamic x = new ExpandoObject();
x.name = "name";
x.age = "22";
x.height = 1.9;