【发布时间】:2013-07-26 17:23:26
【问题描述】:
假设我们有一个匿名类型的实例:
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 个成员?
【问题讨论】:
-
我不认为有一个简单的方法,而且这似乎是对匿名类型的滥用。如果您需要那么多字段和类型之间的那么多共性,只需自己声明类型即可。如果您希望动态添加这些字段,ExpandoObject (msdn.microsoft.com/en-us/library/…)可以提供帮助。
-
虽然我同意@dlev,但解决方法是简单地这样做:
var d = new { b, Jiffle = "xyz" }; -
@dlev 我已将您的评论提取到 an answer,但如果您想自己发布并获得 25 名代表,请随意这样做:)
标签: c# c#-3.0 anonymous-types