【问题标题】:How to set the values for array-attributes in C# Model Class如何在 C# 模型类中设置数组属性的值
【发布时间】:2018-11-05 21:28:31
【问题描述】:

我有一个模型类(Json 转换为 C# 类),其中我有一个数组及其属性。

现在的问题是我需要设置这个数组的值 atrributesfieldIdfieldValue 存在于名为 optionalFields 的数组中。

提醒一下,我已经编写了一个构造函数,我可以在其中初始化变量,这是一个直接的镜头,但我尝试了几种方法来设置数组属性的值,但我实际上是在浪费时间。

下面是 Json :

{
  "entityId": "1234",
  "inventoryId": "4567",
  "saleAccount": "SAA",
  "saleGroup": "SLL",
  "inventoryAccount": "IA1000",
  "workInProcess": 0,
  "isGlApplied": false,
  "optionalFields": [
    {
      "fieldId": "29",
      "fieldValue": "290"
    }
  ],

}

下面是上述json的模型类:

public class Acct_Det_Widget_Post_Insert_Json
{
    public string entityId { get; set; }
    public string inventoryId { get; set; }
    public string saleAccount { get; set; }
    public string saleGroup { get; set; }
    public string inventoryAccount { get; set; }
    public int workInProcess { get; set; }
    public bool isGlApplied { get; set; }
    public Optionalfield[] optionalFields { get; set; }

    public string vehicleId { get; set; }

    public Acct_Det_Widget_Post_Insert_Json()
    {
        this.entityId = "1234";
        this.inventoryId = "34521";
        this.saleAccount = "SAA";
        this.saleGroup = "SLL";
        this.inventoryAccount = "IA1000";
        this.workInProcess = 0;
        this.isGlApplied = false;             
    }

}

public class Optionalfield
{
    public string fieldid { get; set; }
    public string fieldvalue { get; set; }    

}

我可以设置其他字段的值,但我无法设置此 OptionalField 数组属性的值。

请尽快帮我解决问题。

【问题讨论】:

  • 你试过直接 JSON 反序列化吗? new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize("你的 JSON 字符串变量放在这里");
  • “我无法为...设置值”是什么意思?为什么?你试过什么?你有任何错误或异常吗?
  • 我知道 JSON 反序列化的部分,但由于我是一只刚开始学习 C# 的新蜜蜂,我在设置数组属性的值时被打动了
  • 我错过了没有初始化数组,从java到C#的语法有点不同,开始习惯了。

标签: c# c#-2.0


【解决方案1】:

为了设置数组的值,首先必须对其进行初始化。

public Optionalfield[] optionalFields { get; set; } = new Optionalfield[1];

如果您想添加超过 1 个值,只需将 1 更改为您需要的任何值。

接下来,在您的构造函数中,您可以按如下方式分配值:

optionalFields[0] = new Optionalfield();
optionalFields[0].fieldid = "29";
optionalFields[0].fieldvalue = "290";

请注意,您必须创建该类的一个实例并将其分配给数组的有效索引。在这种情况下,数组初始化为 1 个元素,您将实例分配给第一个 (0) 元素。

【讨论】:

  • 嗨 Rik,非常感谢,它成功了,我错过了我没有初始化数组。我刚刚开始学习 C#。
猜你喜欢
  • 1970-01-01
  • 2014-02-04
  • 2017-06-20
  • 2017-01-07
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
  • 2012-03-12
  • 2020-05-23
相关资源
最近更新 更多