我有以下类结构:
我正在序列化
我希望在序列化AxisAlignedRectangle时完全删除多边形属性。 我尝试为AxisAlignedRectangle类添加DataContractAttribute(以及适当的DataMemberAttribute属性),但所有Polygon属性仍然被序列化。 这是出乎意料的,因为Json.NET文档中有一个示例,表明这种方法应该有效。 有人知道一种明确地从生成的Json.NET序列化中删除Envelope属性的方法吗? 特别感谢。
[JsonObject]
public class Polygon : IEnumerable<Point>
{
public List<Point> Vertices { get; set; }
public AxisAlignedRectangle Envelope { get; set; }
}
public class AxisAlignedRectangle : Polygon {
public double Left { get; set; }
...
}
我正在序列化
Polygon
类,但是当我这样做时,我会得到一个JsonSerializationException
,错误信息为:
如果我在针对类型'MyNamespace.AxisAlignedRectangle'的属性'Envelope'检测到自引用循环。
AxisAlignedRectangle
上添加[JsonObject(IsReference = true)]
(如此处所描述),代码就可以正常运行,但每个AxisAlignedRectangle
实例都会有一个自动分配的$id字段,而在重新引用该实例时则会有一个$ref字段。例如,当我对多边形进行序列化时,我会得到:{
Vertices: [ ... ],
Envelope: {
$id: '1',
Left: -5,
...
Vertices: [ ... ],
Envelope: {
$ref: '1'
}
}
}
我希望在序列化AxisAlignedRectangle时完全删除多边形属性。 我尝试为AxisAlignedRectangle类添加DataContractAttribute(以及适当的DataMemberAttribute属性),但所有Polygon属性仍然被序列化。 这是出乎意料的,因为Json.NET文档中有一个示例,表明这种方法应该有效。 有人知道一种明确地从生成的Json.NET序列化中删除Envelope属性的方法吗? 特别感谢。