【问题标题】:How to define a class whose properties change in runtime? [duplicate]如何定义一个属性在运行时发生变化的类? [复制]
【发布时间】:2014-12-18 00:36:46
【问题描述】:

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

【问题讨论】:

  • 获得数据后你想用它做什么?
  • 你试过字典吗?
  • 把它们(或封装它们的东西)塞进字典里?
  • 这个问题已经在这里回答了 load 次了,你有没有费心去读任何东西?

标签: c# json


【解决方案1】:

您可以为此使用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 完美包装。

【讨论】:

    【解决方案2】:

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

    很容易使用。

    【讨论】:

      猜你喜欢
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多