使用自定义构造函数反序列化不可变类

我有一个带有一些公共不可变属性的公共类(仅get;)。它还具有一个自定义构造函数,该构造函数带有一个附加参数,设置属性不是必需的,而是仅用于计算。我认为,因此,该类无法通过Newtonsoft Json正确地反序列化。 其他仅具有属性输入参数的类可以正常工作。

因此,此类无法正确地反序列化自身,返回零。它具有附加的参数“值”,该参数与任何属性均不相关,仅用于计算和显示数据。

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)并且没有构造函数,它将正确地反序列化自己。

公共类DurationData         {             公开的DateTime开始{ }

        public int Index { get; }

        public double activityDurationInHours { get; }

        public string activetime { get; }

        public ShiftDurationData(DateTime start,double activityDurationInHours,string activeTime)
        {
            Start = start;
            Index = shiftIndex;                 
            activityDurationInHours = activityDurationInHours
            activeTime = activetime ?? throw new ArgumentNullException(nameof(activeTime))
        }        
    }

但是我不想创建其他模拟类,并且希望使用原始类。如何正确执行

sunyirui 回答:使用自定义构造函数反序列化不可变类

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3083222.html

大家都在问