2011-06-06 103 views
2

我可以动态创建一个属性类型属性名称为(匿名)对象,如果名称和类型我从字符串变量?我可以为对象动态创建属性类型和属性名称吗?

+0

您是否问您是否可以在运行时将新属性添加到匿名对象,或者如果您从字符串变量访问匿名类型的属性? – 2011-06-06 19:13:45

回答

1

如果你正在谈论匿名类型(如var x = new { Property1 = data1, ...}),那么我认为你可以。

你可能会做的是从你已经拥有的那个创建另一个新的匿名类型。要在其中创建XY,你可以通过var Y = new { YProp1 = X.Prop1, YProp2 = X.Prop2, etc}

0

对于匿名类,没有。这些由编译器在编译时定义。

0

C#.NET是一种静态类型语言,意味着所有类都必须在编译时定义。所以,对你的问题的下意识回答是

但是,像大多数语言一样,您可以使用变通办法。例如,您可以创建一个具有Dictionary<string,object>类型属性的类,该属性将您的属性名称作为键和属性值作为值。

当然,这个缺点是您需要编写额外的代码来验证字典中的数据是否有效......所以它可能不值得。

1

创建Y在C#4.0起,可以使用动态关键字与DynamicObject对象基于字典创建/在运行时非常扩展性能像JavaScript。