【发布时间】:2021-07-27 19:45:13
【问题描述】:
不知道如何表达标题抱歉。
我有两个从 JSON 到 c# 在线转换器生成的类。这些类使我可以反序列化一些 JSON 对象并将它们转换为我可以在程序的其他地方使用的对象。我使用的转换器给了我这两个类:
namespace testing
{
public partial class stopEvent
{
[JsonProperty("event")]
public Event1 Event { get; set; }
}
public partial class Event1
{
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("ID")]
public string Id { get; set; }
[JsonProperty("sessID")]
public long SessId { get; set; }
[JsonProperty("startTime")]
public DateTime StartTime { get; set; }
[JsonProperty("endTime")]
public DateTime EndTime { get; set; }
[JsonProperty("Number")]
public string Number { get; set; }
[JsonProperty("Percentage")]
public string Percentage { get; set; }
}
}
这是我的第二个代表开始事件的对象。
using System;
using Newtonsoft.Json;
namespace testing
{
public partial class startEvent
{
[JsonProperty("event")]
public Event Event { get; set; }
}
public partial class Event
{
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("ID")]
public string Id { get; set; }
[JsonProperty("sessID")]
public long SessId { get; set; }
[JsonProperty("startTime")]
public DateTime StartTime { get; set; }
[JsonProperty("Number")]
public long Number { get; set; }
[JsonProperty("rfID")]
public string RfId { get; set; }
[JsonProperty("startPercentage")]
public string startPercentage { get; set; }
}
}
当我在我的代码中使用这些并反序列化 json 并将其转换为对象时,它工作正常。我不得不将 Event 从第二个类重命名为 Event1,否则它将与第一个部分类同名。
但是,我注意到两个类中有很多重复的字段,所以我想我可以创建一个超类,然后两者都可以从那里继承。这是我的超级班:
public class Event
{
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("ID")]
public string Id { get; set; }
[JsonProperty("sessID")]
public long SessId { get; set; }
[JsonProperty("startTime")]
public DateTime StartTime { get; set; }
[JsonProperty("Number")]
public long Number { get; set; }
}
然后我更改了类,使它们看起来像这样:
public class stopEvent : Event
{
[JsonProperty("Percentage")]
public string Percentage { get; set; }
}
与 startEvent 相同。但是,当我尝试在程序的反序列化部分中实现它时,它不起作用 - 所有值都返回为 null,我不知道为什么。
编辑:
反序列化如下:
stopEvent StopEvent = JsonConvert.DeserializeObject<stopEvent>(message);
【问题讨论】:
-
"当我尝试在程序的反序列化部分实现它时它不起作用" -- 请在您的问题中包含此代码
-
@canton7 添加到底部
-
不要继承 StopEvent:不正确的事件。使用 Event 作为 StopEvent public Event Event{get;set;} 的属性。
标签: c# .net inheritance partial-classes