При возврате XML из службы WCF вы обычно используете один из сериализаторов, либо DataContractSerializer, либо XmlSerializer. Мне не удалось заставить DataContractSerializer вернуть то, что вы ищете, но вот один способ, который работает с XmlSerializer.
[WebGet(UriTemplate = "bar")]
[OperationContract]
public bar GetData() {
return new bar();
}
[XmlRoot(Namespace = "")]
public class bar : IXmlSerializable {
public void WriteXml(XmlWriter writer) {
writer.WriteString("foo");
}
public XmlSchema GetSchema() {
throw new NotImplementedException();
}
public void ReadXml(XmlReader reader) {
throw new NotImplementedException();
}
}
В конце концов я просто перестал пытаться заставить сериализаторы делать то, что хотел, и просто начал возвращать «поток» из моих контрактов и сам генерировать XML.