¿Cómo usar un IXmlSerializable personalizado como XmlAttribute?
Yo implementoIXmlSerializable
para el tipo debajo del cual se codifica un valor de color RGB como una sola cadena:
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);
}
}
Como se trata de una única cadena, quería almacenarla como un atributo para ahorrar espacio. Pero tan pronto como agregue el[XmlAttribute]
a mi propiedad, obtengo la siguiente excepción:
{"No se puede serializar el miembro 'Color' del tipo SerializableColor. XmlAttribute / XmlText no se puede usar para codificar tipos que implementan IXmlSerializable."}
¿Hay alguna manera de hacer que funcione como un atributo también?