如何定义其属性在运行时更改的类?

时间:2014-10-22 14:12:38

标签: c# json

我有一个名为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#中为这样的类建模的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

您可以使用ExpandoObject。事实上,ExpandoObject只是一个包裹的Dictionary<string, object>

您可以直接创建&#39;属性:

dynamic employee = new ExpandoObject();
employee.Name = "John Smith";

或查询基础词典:

dynamic employee = new ExpandoObject();
((IDictionary<string, object>)employee).Add("Name", "John Smith");

您使用的是ExpandoObject。你甚至可以混合两种用法。

此外,这使用JSON完美包装。

答案 1 :(得分:0)

我建议使用DataContractJsonSerializer来执行JSON数据的反序列化。使用DataContractJsonSerializer.UseSimpleDictionaryFormat设置为true,以使结果为Dictionary<string, object>类型。

非常好用。