Как использовать пользовательский IXmlSerializable в качестве XmlAttribute?
Я реализую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]
в мою собственность я получаю следующее исключение:
{"Cannot serialize member 'Color' of type SerializableColor. XmlAttribute/XmlText cannot be used to encode types implementing IXmlSerializable."}
Есть ли способ заставить его работать как атрибут?