如何在xml反序列化期间执行操作

时间:2013-12-15 17:15:01

标签: c# serialization deserialization

我有2个类,我正在序列化以保存数据。

[Serializable]
public class Album
{

    private string nom;
    [XmlElement]
    public string Nom
    {
        get { return nom; }
        set { nom = value; }
    }

    private List<Photo> photos = new List<Photo>();
    [XmlArray]
    public List<Photo> Photos
    {
        get { return photos; }
        set { photos = value; }
    }
...
}

还有一些照片:

[Serializable]
public class Photo
{
    private string nom;
    [XmlElement]
    public string Nom
    {
        get { return nom; }
        set { nom = value; }
    }

    private string path;
    [XmlElement]
    public string Path
    {
        get { return path; }
        set { path = value; }
    }

    private Image image;
    [XmlIgnore]
    public Image Image
    {
        get { return image; }
        set { image = value; }
    }
...
}

如您所见,我没有序列化Bitmap Image。但是当我反序列化我的XML时,我希望在同一时间构建Bitmap对象。

解决方案是在反序列化后使用循环创建位图图像,但我认为有一种正确的方法。

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

将图像创建逻辑放在setter of Path属性中。将为每个反序列化对象调用Setter。

[XmlElement]
public string Path
{
    get { return path; }
    set 
    { 
       path = value;
       // Image creation logic here
    }
}