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

C# 我可以为对象动态创建属性类型和属性名称吗?,c#,.net,C#,.net,如果名称和类型是从字符串变量获取的,我是否可以为(匿名)对象动态创建属性类型和属性名称,这意味着所有类都必须在编译时定义。因此,你的问题的下意识答案是否 但是,与大多数语言一样,您可以使用一些变通方法。例如,您可以创建一个类,该类具有一个字典类型属性,该属性将属性名称作为键,属性值作为值 当然,这样做的缺点是您需要编写额外的代码来验证字典中的数据是否有效。。。因此,这可能不值得。如果您谈论的是匿名类型(例如var x=new{Property1=data1,…}),那么我认为您不能 您可以做的是

如果名称和类型是从字符串变量获取的,我是否可以为(匿名)对象动态创建属性类型和属性名称,这意味着所有类都必须在编译时定义。因此,你的问题的下意识答案是

但是,与大多数语言一样,您可以使用一些变通方法。例如,您可以创建一个类,该类具有一个
字典
类型属性,该属性将属性名称作为键,属性值作为值


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

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


您可以做的是从已有的匿名类型创建另一个新的匿名类型。在你想从
X
创建
Y
的地方,你可以通过
var Y=new{YProp1=X.Prop1,YProp2=X.Prop2等}

创建
Y
,在c#4.0以后的版本中,你可以使用动态关键字和基于字典的DynamicObject对象在运行时创建/扩展属性,非常类似于JavaScript

您是在询问是否可以在运行时向匿名对象添加新属性,还是从字符串变量访问匿名类型的属性?