System.Uri implementa ISerializable, pero da error? [duplicar]
Posible duplicado:
Cómo (xml) serializar un uri
Que yo sepaUri
implementa ISerializable, pero produce un error cuando se usa de esta manera:
XmlSerializer xs = new XmlSerializer(typeof(Server));
xs.Serialize(Console.Out, new Server { Name = "test", URI = new Uri("http://localhost/") });
public class Server
{
public string Name { get; set; }
public Uri URI { get; set; }
}
Funciona bien siUri
el tipo se cambia astring
.
¿Alguien sabe cuál es el culpable?
Solución propuesta porAnton Gogolev:public class Server
{
public string Name { get; set; }
[XmlIgnore()]
public Uri Uri;
[XmlElement("URI")]
public string _URI // Unfortunately this has to be public to be xml serialized.
{
get { return Uri.ToString(); }
set { Uri = new Uri(value); }
}
}
(Gracias porSlaks También señalando el atraso de mi método ...)
Esto produce salida XML:
<Server>
<URI>http://localhost/</URI>
<Name>test</Name>
</Server>
Lo reescribí aquí para que el código sea visible.