自动后反序列化执行

MPe*_*ier 2 c# xml-deserialization deserialization

假设C#中有一个简单的类:

[Serializable]
public class MyClass
{
    public int A { get; set; }
    public int B { get; set; }
    [XmlIgnore]
    public int Sum { get; }
}
Run Code Online (Sandbox Code Playgroud)

这是从包含A和B值的简单XML文件反序列化的.但是,Sum使用A和计算,而B不是序列化.假设我不想在访问器中动态计算Sum.我该如何预先计算Sum?首先调用构造函数,当然,这意味着A和B稍后不作为符号,因此还没有用来计算Sum.是否有某种后反序列化或后实例化的东西我可以使用,以便对象完全一步创建?我只是不希望我的对象永远处于不完整和无效的状态.

小智 5

我想你正在试着问别的问题.此用例并不能证明您要求的解决方案的复杂性.

如果是用例:

  1. 即时计算.将Sum转换为方法.
  2. 如果您担心开销,请使用支持字段.

例如

if (_alreadyCalculated) 
{
    return _sum;
}
_sum = A+B;
_alreadyCalculated = true;
return _sum;
Run Code Online (Sandbox Code Playgroud)