首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换类成员的XML序列化

替换类成员的XML序列化
EN

Stack Overflow用户
提问于 2013-03-16 20:50:22
回答 2查看 195关注 0票数 1

在我需要序列化的类(Camera)中,我有一个成员没有太多的序列化方法,并且我不能修改它的类。但整个类中只有2-3个参数可以序列化,然后根据这些参数进行反序列化。

代码语言:javascript
复制
XmlSerializer SerializerObj = new XmlSerializer(typeof(Camera));
TextWriter WriteFileStream = new StreamWriter(@"C:\test.xml");
SerializerObj.Serialize(WriteFileStream, cc);
WriteFileStream.Close();

如何以及在何处放置自定义序列化代码,以便从object获取这2-3个参数并提供给序列化程序,然后在反序列化期间使用这2-3个参数再次创建对象。

更新。示例代码如下:

代码语言:javascript
复制
[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.positionmarker.rotation,我就可以重新创建这个对象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-16 21:28:01

如果不能或不想对GMarker进行Xml序列化,那么一定要序列化重构它所需的属性(就像您已经建议的那样)。这样,您就可以创建一个带有后备字段的属性来懒惰地重新创建GMarker。

代码语言:javascript
复制
[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,但我希望你能从这一点开始画出来。

票数 1
EN

Stack Overflow用户

发布于 2013-03-16 20:56:23

通过在Camera类中实现IXmlSerializable接口。

有关更多信息,请查看MSDN

或者,您可以使用XML属性来标记不希望序列化为[XmlIgnore]的属性。

查看MSDN了解更多信息:)。

附言:如果你发布一些代码,我可以给你看一个例子,但你可能不需要我。不过,如果你这样做了,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15449473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档