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

本文关键字:运行时 属性 何定义 定义 | 更新日期: 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>类型。

很容易使用。