Class 使用自定义构造函数反序列化不可变类
我有一个具有一些公共不可变属性(仅get;)的公共类。它还有一个自定义构造函数,该构造函数接受一个附加参数,该参数不是属性设置所需的,而是计算所需的。我认为,正因为如此,这个类无法通过Newtonsoft Json正确地反序列化。 其他仅具有与属性对应的输入参数的类可以正常工作 因此,这个类不能正确地反序列化自身,返回零。它有额外的参数“value”,它与任何属性都不相关,只用于计算和显示数据Class 使用自定义构造函数反序列化不可变类,class,constructor,json.net,immutability,json-deserialization,Class,Constructor,Json.net,Immutability,Json Deserialization,我有一个具有一些公共不可变属性(仅get;)的公共类。它还有一个自定义构造函数,该构造函数接受一个附加参数,该参数不是属性设置所需的,而是计算所需的。我认为,正因为如此,这个类无法通过Newtonsoft Json正确地反序列化。 其他仅具有与属性对应的输入参数的类可以正常工作 因此,这个类不能正确地反序列化自身,返回零。它有额外的参数“value”,它与任何属性都不相关,只用于计算和显示数据 public class DurationData { public Date
public class DurationData
{
public DateTime Start { get; }
public int Index { get; }
public double ActivityDurationInHours { get; }
public string Activetime { get; }
public ShiftDurationData(DateTime start, int index, TimeSpan value )
{
Start = start;
Index = shiftIndex;
ActivityDurationInHours = Math.Round(value.TotalHours, 1);
Activetime = $"{(int)value.TotalHours:d2}:{value.Minutes:D2}:{value.Seconds:D2}";
}
}
如果我像下面这样设置模拟,或者只是使用可变属性(get;set)而没有构造函数,那么它会正确地反序列化自身
公共类持续数据
{
公共日期时间开始{get;}
public int Index { get; }
public double ActivityDurationInHours { get; }
public string Activetime { get; }
public ShiftDurationData(DateTime start, int index, double activityDurationInHours, string activeTime)
{
Start = start;
Index = shiftIndex;
ActivityDurationInHours = activityDurationInHours
ActiveTime = activetime ?? throw new ArgumentNullException(nameof(activeTime))
}
}
但是我不想创建额外的模拟类,并且希望使用original。如何正确地做到这一点您是否能够通过添加Json.NET或数据协定属性来修改
DurationData
类?如果可以,请参阅。