我可以为对象动态创建属性类型和属性名称吗
本文关键字:属性 类型 我可以 对象 动态 创建 | 更新日期: 2023-09-27 17:58:35
如果名称和类型来自字符串变量,我是否可以为(匿名)对象动态创建属性类型和特性名称?
如果您谈论的是匿名类型(如var x = new { Property1 = data1, ...}
),那么我认为您不能。
您可以做的是从现有的匿名类型创建另一个新的匿名类型。如果要从X
创建Y
,可以通过var Y = new { YProp1 = X.Prop1, YProp2 = X.Prop2, etc}
创建Y
在c#4.0以后的版本中,您可以使用dynamic关键字和基于字典的DynamicObject对象在运行时创建/扩展属性,非常像JavaScript。
对于匿名类,没有。这些类在编译时由编译器定义。
C#是一种静态类型语言,这意味着所有类都必须在编译时定义。因此,你的问题的下意识答案是否。
然而,像大多数语言一样,也有一些变通方法可以使用。例如,您可以创建一个具有Dictionary<string,object>
类型属性的类,该属性将以属性名称为键,以属性值为值。
当然,这样做的缺点是,您需要编写额外的代码来验证字典中的数据是否有效。。。所以这可能不值得。