当前位置:  开发笔记 > 前端 > 正文

XmlSerializer和System.Drawing.Color的最佳解决方案

如何解决《XmlSerializer和System.Drawing.Color的最佳解决方案》经验,为你挑选了3个好方法。

System.Drawing.Color对象显然不会使用XmlSerializer进行序列化.xml序列化颜色的最佳方法是什么?



1> BenAlabaster..:

最简单的方法是使用它的核心:

String HtmlColor = System.Drawing.ColorTranslator.ToHtml(MyColorInstance);

它只会将颜色转换为HTML使用的标准十六进制字符串,这很容易反序列化:

Color MyColor = System.Drawing.ColorTranslator.FromHtml(MyColorString);

这样你只需要使用沼泽标准字符串......



2> P a u l..:

最终工作版本:

Color clrGrid = Color.FromArgb(0, 0, 0);
[XmlIgnore]
public Color ClrGrid 
{
    get { return clrGrid; }
    set { clrGrid = value; }
}
[XmlElement("ClrGrid")]
public string ClrGridHtml
{
    get { return ColorTranslator.ToHtml(clrGrid); }
    set { ClrGrid = ColorTranslator.FromHtml(value); }
}



3> nietras..:

我们用这个:

[Serializable]
public struct ColorEx
{
    private Color m_color;

    public ColorEx(Color color)
    {
        m_color = color;
    }

    [XmlIgnore]
    public Color Color
    { get { return m_color; } set { m_color = value; } }

    [XmlAttribute]
    public string ColorHtml
    { 
        get { return ColorTranslator.ToHtml(this.Color); } 
        set { this.Color = ColorTranslator.FromHtml(value); } }

    public static implicit operator Color(ColorEx colorEx)
    {
        return colorEx.Color;
    }

    public static implicit operator ColorEx(Color color)
    {
        return new ColorEx(color);
    }
}

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有