Desserializar a propriedade do objeto com StringReader vs XmlNodeReader

PorqueXmlSerializer preencher minha propriedade de objeto com umXmlNode ao desserializar um elemento digitado vazio usandoXmlNodeReader em vez de uma string vazia, como ocorre ao usarStringReader (ouXmlTextReader)?

A segunda asserção no seguinte exemplo de código falha:

var doc = new XmlDocument();
doc.Load(new StringReader(@"
    <Test xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
          xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
      <Value xsi:type=""xsd:string"" />
    </Test>"));
var ser = new XmlSerializer(typeof (Test));

var reader1 = new StringReader(doc.InnerXml);
var obj1 = (Test) ser.Deserialize(reader1);
Debug.Assert(obj1.Value is string);

var reader2 = new XmlNodeReader(doc.FirstChild);
var obj2 = (Test) ser.Deserialize(reader2);
Debug.Assert(obj2.Value is string);

public class Test
{
    public object Value { get; set; }
}

Acho que tem algo a ver com o nulo internoNamespaceManager propriedade, mas não tenho certeza de como contornar essa limitação misteriosa. Como posso desserializar de forma confiável um subconjunto do meu documento XML analisado sem convertê-lo novamente em uma string e analisá-lo novamente?

questionAnswers(1)

yourAnswerToTheQuestion