复杂类型 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 无法重新填充此对象
所以我有 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 无法重新填充此对象