1
,我有以下类中的自定义对象的所有属性:抽象LayerPersistInfo类具体实现的DataContractSerializer的序列化不收集
[Serializable]
[DataContract(Name = "LayerInfo", Namespace = "ems.gis")]
public abstract class LayerPersistInfo
{
public LayerPersistInfo() { }
public LayerPersistInfo(int index, MappingContextBase context)
{
Index = index;
Context = context;
}
[DataMember(Name="idx", Order=0)]
public int Index { get; set; }
//[DataMember(Name = "name")]
//public string Name { get; set; }
[DataMember(EmitDefaultValue = true, Name="ctx", Order=1)]
public MappingContextBase Context { get; set; }
[DataMember(EmitDefaultValue = false, Name="lyrs", Order=2)]
public LayersPersistInfo Children { get; set; }
public abstract TocItemModel GetLayerModel();
}
[Serializable]
[CollectionDataContract(Name = "lyrs", Namespace = "ems.gis", ItemName = "lyr")]
public class LayersPersistInfo : List<LayerPersistInfo>
{
}
多个实例LayersPersistInfo我需要序列结束。我所观察到的很奇怪。
如果LayersPersistInfo具有2个或更多子项,则索引0处元素的每个子元素的Context属性为null。在重新填充集合之后的下一次序列化尝试中,LayersPersistInfo的索引1处的元素的每个子元素的Context属性为null。在下一次尝试中,项目0的子项都有空上下文等等。这种行为非常一致。
如果我的自定义集合LayersPersistInfo只有一个项目,则所有子项都会正确序列化。
在串行器实例上调用WriteObject之前,我已经放了一个断点,并且这些属性从不为空。我可能在这里做错了什么?
TIA。
然后接受这个答案。 ;) – dss539 2010-05-17 20:01:38