Colocación de XmlRootAttribute al deserializar a Lista

Tengo el siguiente XML

<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<Sites>
  <Site>
    <Code>TWTR</Code>
    <Name>twitter.com</Name>
  </Site>
  <Site>
    <Code>FB</Code>
    <Name>facebook.com</Name>
  </Site>
  <Site>
    <Code>SO</Code>
    <Name>stackoverflow.com</Name>
  </Site>
</Sites>

Este es el código:

public class Program
{
    static void Main(string[] args)
    {
        var fs = new FileStream(@"D:\temp\Sites.xml", FileMode.Open);
        var serializer = new XmlSerializer(typeof(List<Site>));
        var instance = (List<Site>)serializer.Deserialize(fs);
    }
}

[XmlRoot("Sites")]
public class Site
{
    public string Code { get; set; }
    public string Name { get; set; }
}

La excepción que recibo es:<Sites xmlns=''> was not expected.. El motivo de este error suele ser, cuando no defino un XmlRoot para elXmlSerializer. Pero como pueden ver, lo hice decorando la clase.Site con elXmlRootAttribute

Para completar mi confusión, el siguiente truco funciona:

Reemplazar

var serializer = new XmlSerializer(typeof(List<Site>));

con

var serializer = new XmlSerializer(typeof(List<Site>), new XmlRootAttribute("Sites"));

¿Me estoy perdiendo de algo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta