![](/img/trans.png)
[英]XML serialization of derived class in a list, need to set member on parent class
[英]Replacing XML serialization of class member
在我的类(相机)中,我需要序列化,我有一个成员没有太多序列化方法,并且我无法修改其类。 但是整个类中只有2-3个参数可以序列化,然后根据序列化反序列化。
XmlSerializer SerializerObj = new XmlSerializer(typeof(Camera));
TextWriter WriteFileStream = new StreamWriter(@"C:\test.xml");
SerializerObj.Serialize(WriteFileStream, cc);
WriteFileStream.Close();
我如何以及在何处放置自定义序列化代码,以从对象中获取这2-3个参数并提供给序列化器,然后在反序列化期间,使用这2-3个参数再次创建该对象。
更新。 示例代码:
[Serializable()]
public class Camera
{
public string name;
public int index;
public double distance;
public List<string> CameraList { get; set; }
[XmlIgnore()]
public GMarkerGoogle marker;
public Camera()
{
}
}
marker
是没有序列化方式的成员。 但是有了marker.position
, marker.rotation
我可以重新创建该对象。
如果您不能或不希望Xml序列化您的GMarker,那么请确保您序列化了重建它所需的属性(类似于您已经建议的内容)。 这样,您可以创建一个具有后备字段的属性来懒惰地重新创建GMarker。
[Serializable()]
public class Camera
{
public string name;
public int index;
public double distance;
public List<string> CameraList { get; set; }
private GMarkerGoogle _marker;
[XmlIgnore()]
public GMarkerGoogle Marker
{
set
{
_marker = value;
MarkerPosition = _marker.position;
MarkerRotation = _marker.rotation;
}
get
{
if (_marker == null)
{
_marker = new GMarkerGoogle(MarkerPosition, MarkerRotation);
}
return _marker;
}
}
public double MarkerPosition { get; set; }
public double MarkerRotation { get; set; }
public Camera()
{
}
}
这有帮助吗? 我做了一两件事,因为我不知道标记的API,但是我希望您可以从这一点开始画图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.