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.

Respuestas a la pregunta(4)

Su respuesta a la pregunta