复杂类型 class 未被 XmlSerializer 序列化

Complex type class not being serialized by XmlSerializer

所以我有 classes:

public class classA : BaseClass
{
    public classA(){}
}


public abstract class BaseClass
{
    public ComplexTypeClass Total { get; set; }
    public List<Item> Items {get; set; } 
    //some other properties
}


public class ComplexTypeClass : ValueObject<ComplexTypeClass>
{
    public ComplexTypeClass()
    {
    }
    public ComplexTypeClass(decimal p1, decimal p2, decimal p)
    {
        P1 = p1;
        P2 = p2;
        P3 = p3;
    }
    public decimal P1 { get; }
    public decimal P2 { get; }
    public decimal P3 { get; }

    //some methods and validations
}


public abstract class ValueObject<T> : IEquatable<T>, IValidatableObject where T : ValueObject<T>
{
    //all implemented interfaces methods
}

然后我尝试序列化 classA,所有属性和列表都正确序列化,ComplexTypeClass 属性 除外。为此 属性 我在 xml <Total />.

中得到这样的行

所有 class 都有 [Serializable][ComplexType][XmlType] 属性。我也尝试过不同的组合。我试过在 ComplexTypeClass 属性 上使用 [XmlElement][XmlRoot]。然而,那没有任何作用。

我有另一个复杂类型 class,它没有接口,这个 class 被正确序列化。

这些接口有什么作用吗?还是我遗漏了一些简单的小东西?

编辑: 摆脱接口没有帮助。

如果有人遇到这种问题,正如谦虚的@Sinatr 指出的那样,ComplexTypeClass 属性

public decimal P1 { get; }
public decimal P2 { get; }
public decimal P3 { get; }

没有 set,因此 XmlSerializer 无法重新填充此对象