Escape da string Unicode no XmlElement apesar de escrever XML em UTF-8

Para um dadoXmlElementEu preciso ser capaz de definir o texto interno para uma versão de escape da seqüência de caracteres Unicode, apesar do documento sendo codificado em UTF-8. Existe alguma maneira de conseguir isso?

Aqui está uma versão simples do código:

const string text = "ñ";

var document = new XmlDocument {PreserveWhitespace = true};
var root = document.CreateElement("root");
root.InnerXml = text;
document.AppendChild(root);

var settings = new XmlWriterSettings {Encoding = Encoding.UTF8, OmitXmlDeclaration = true};
using (var stream = new FileStream("out.xml", FileMode.Create))
using (var writer = XmlWriter.Create(stream, settings))
    document.WriteTo(writer);

Esperado:

<root>&#xF1;</root>

Real:

<root>ñ</root>

Usando umXmlWriter diretamente e chamandoWriteRaw(text) funciona, mas eu só tenho acesso a umXmlDocumente a serialização acontece mais tarde. NoXmlElement, InnerText escapa do& para&amp;, como esperado, e definindoValue lança uma exceção.

Existe alguma maneira de definir o texto interno de umXmlElement para o texto ASCII com escape, independentemente da codificação usada no final? Eu sinto que devo estar perdendo algo óbvio, ou simplesmente não é possível.

questionAnswers(1)

yourAnswerToTheQuestion