繁体   English   中英

是否可以更改匿名类型?

[英]Is it possible to alter an anonymous type?

这可能吗? 说您有以下几点:

var x = new { name = "name", age = 22 };

然后可以向该对象添加或添加属性吗? 因此,在以后的阶段中,我可以添加高度使其成为{ name = "name", age = 22, height = 1.9 };

只是寻找一种重铸方法或在新属性中添加一些东西而不必优雅。

不,这绝对不可能。 匿名类型是不可变的,并由其属性的名称和类型以及它们出现的顺序来精确定义。 添加新属性是另一种类型。

你可以匿名类型中做的最好的就是创建一个不同的匿名类型的实例:

var y = new { name = x.name, age = x.age, height = 1.9 };

(请注意, name =age =不是必需的;编译器会为您推断它们。)

但是,实际上Dictionary<string, object>如果您不在.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为空。

为什么不创建一个新的匿名类型呢?

var x = new { name = "name", age = 22 };
var y = new { x.name, x.age, height = 1.9 };

也许ExpandoObject可以使用?

dynamic x = new ExpandoObject();
x.name = "name";
x.age = "22";
x.height = 1.9;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM