2

私は次のクラスを持っています:

public class DisplayFunction 
    {
        [System.Xml.Serialization.XmlAttribute()]
        public byte[] Color
        {
            get;
            set;
        }
        [System.Xml.Serialization.XmlAttribute()]
        public FunctionShape Shape
        {
            get;
            set;
        }
        [System.Xml.Serialization.XmlAttribute()]
        public int Id
        {
            get;
            set;
        }
}

私はxmlシリアライザーを使用して結果を取得しています:

<DisplayFunctions Color="et57hQ==" Shape="Bar" Id="514" />

結果を次のようにしたい間:

 <DisplayFunctions Color="122,222,123,133" Shape="Bar" Id="514" />

どうすればその結果を得ることができますか?

4

1 に答える 1

1

XML シリアライザーは、バイト配列を使用して Color をシリアライズしています。したがって、結果は奇妙です。

私の提案は、型のパブリック プロパティを使用しstringて色をシリアル化し、変換を使用して色を文字列に、またはその逆に変換することです。

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

したがって、次のものが必要です。

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

  [XmlElement("Color")]
  public string ColorStr
  {
      get { return ColorTranslator.ToHtml(Color); }
      set { Color = ColorTranslator.FromHtml(value); }
  }

: を に変換する必要がColorある場合は、属性を無視してbyte[]色を取得する追加のプロパティを追加できます。byte[][XmlIgnore]

が提供する形式がColorTranslator.ToHtml有効でない場合は、カスタム カラー変換を使用できます。たとえば、

public string ToCustomString(Color color)
{
    return string.Format("{0},{1},{2},{3}", color.A, color.R, color.G, color.B);
}

同様の方法で、文字列から色を割り当てます。

それが役に立てば幸い-

于 2012-04-26T09:03:37.043 に答える