2010-11-19 141 views
2

我知道我可以做这样的事情:创建匿名类型!

var test = new { FirstName = string.Empty, LastName = string.empty }; 

但我不,如果有一种方法可以动态地做到这一点,让我们说:

var test = new {}; 
if (condition) { 
    test.Property = string.Empty; 
} 

比方说,我有这样的:

string[] names = 
{ 
    "eder", 
    "quiñones", 
    "quoe840629", 
    "3301" 
}; 

var anonymous = new {}; 
foreach (string name in names) { 
    // Create anonymous types... 
} 

有什么建议吗?

〜埃德尔醌

回答

7

你可以这样做:

var test = new { FirstName = (condition ? string.Emtpy : "other") }; 

如果您正在使用C#4你可以使用一个dynamic型(ExpandoObject)。

+0

假设我必须根据对象列表的大小而不是有条件地创建对象! – Eder 2010-11-19 18:20:10

+0

N个属性取决于我的列表大小。 – Eder 2010-11-19 18:21:38

+0

你的列表的动态如何。它可以是任何东西,或者列表可以有预定义的一组属性? – genericuser 2010-11-19 18:48:04