如何定义其属性在运行时更改的类
本文关键字:运行时 属性 何定义 定义 | 更新日期: 2023-09-27 18:27:37
我有一个名为Attributes 的类
public class Attributes
{
public string Length { get; set; }
public string Size { get; set; }
public string Color { get; set; }
public string Material { get; set; }
public string Diameter { get; set; }
}
这个类是从对返回JSON的web服务的调用中填充的。web服务每次返回一组不同的属性,并且不可能在编译时定义所有属性,因为这可能会导致数千个属性。
在c#中建模这样一个类的最佳方法是什么?
您可以使用ExpandoObject
。实际上,ExpandoObject
只是一个被包裹的Dictionary<string, object>
。
您可以直接"创建"属性:
dynamic employee = new ExpandoObject();
employee.Name = "John Smith";
或者查询底层字典:
dynamic employee = new ExpandoObject();
((IDictionary<string, object>)employee).Add("Name", "John Smith");
无论你的用途是什么,ExpandoObject
都是可能的。你甚至可以混合使用这两种用法。
此外,它使用JSON完美地封装。
我建议使用DataContractJsonSerializer来执行JSON数据的反序列化。使用DataContractJsonSerializer.UseSimpleDictionaryFormat设置为true,使结果为Dictionary<string, object>
类型。
很容易使用。