我IXmlSerializable
为以下类型实现,它将 RGB 颜色值编码为单个字符串:
public class SerializableColor : IXmlSerializable
{
public int R { get; set; }
public int G { get; set; }
public int B { get; set; }
public XmlSchema GetSchema()
{
return null;
}
public void ReadXml(XmlReader reader)
{
var data = reader.ReadString();
reader.ReadEndElement();
var split = data.Split(' ');
R = int.Parse(split[0]);
G = int.Parse(split[1]);
B = int.Parse(split[2]);
}
public void WriteXml(XmlWriter writer)
{
writer.WriteString(R + " " + G + " " + B);
}
}
由于它是单个字符串,因此我想将其存储为属性以节省空间。但是,一旦我将其添加[XmlAttribute]
到我的属性中,就会出现以下异常:
{“无法序列化 SerializableColor 类型的成员 'Color'。XmlAttribute/XmlText 不能用于编码实现 IXmlSerializable 的类型。”}
有没有办法让它也作为一个属性工作?