假设我们有一个匿名类型的实例:
var b = new {
Length = 5
, Width = 6
// 40 more properties
};
我们希望创建一个不同匿名类型的实例,该实例具有与第一个类型相同的所有成员,具有与第一个实例相同的值,但有一个额外成员:
var d = new {
b.Length
, b.Width
// the same 40 more properties, with values from b
, Jiffle = "custard"
};
很高兴编译器会自动计算出我们想要调用d
类型成员的内容,只需从这个初始值设定项中获取。但是,我们有什么方法可以避免明确提及我们要复制的所有42个成员吗?
答案 0 :(得分:3)
这听起来像你需要具有继承模式的定义良好的类型。
您的上述说法是d是b的扩展名:或
class b
{
Length = 5
, Width = 6
// 40 more properties
}
class d : b
{
Jiffle = "custard"
}
答案 1 :(得分:0)
组合物
var d = new { B = b, Jiffle = "custard" }
d.B.Length;
答案 2 :(得分:0)
将dlev's comment拉出答案,以便我接受:
我认为没有一种简单的方法,而且它看起来确实像 滥用匿名类型。如果你需要那么多领域那么多 类型之间的共性,只需自己声明类型。如果你是 希望动态添加这些字段,ExpandoObject可以 帮助