我可以动态创建对象的属性类型和属性名称吗?

时间:2011-06-06 19:03:26

标签: c# .net

如果我从字符串变量中获取名称和类型,是否可以为(匿名)对象动态创建属性类型属性名称

4 个答案:

答案 0 :(得分:1)

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

您可以做的是从您已有的新匿名类型创建另一个新的匿名类型。您要从Y创建X的位置,可以Y

创建var Y = new { YProp1 = X.Prop1, YProp2 = X.Prop2, etc}

答案 1 :(得分:1)

在c#4.0之后,您可以使用基于字典的DynamicObject对象的dynamic关键字在运行时创建/扩展属性,就像JavaScript一样。

答案 2 :(得分:0)

对于匿名课程,没有。这些是在编译时由编译器定义的。

答案 3 :(得分:0)

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

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

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