2016-03-02 4 views
3

Microsoft рекомендует использовать XmlWriter вместо XmlTextWriter https://msdn.microsoft.com/en-us/library/system.xml.xmltextwriter(v=vs.110).aspxКак переключаться между XmlTextWriter и XmlWriter?

public string Serialize(BackgroundJobInfo info) 
{ 
    var stringBuilder = new StringBuilder(); 

    using (var stringWriter = new StringWriter(stringBuilder, CultureInfo.InvariantCulture)) 
    { 
     var writer = new XmlTextWriter(stringWriter); 
     new DataContractSerializer(typeof(BackgroundJobInfo)).WriteObject(writer, info); 
    } 

    return stringBuilder.ToString(); 
} 

Как правильно использовать XmlWriter в моем методе вместо XmlTextWriter?

+0

Для разъяснения по указанной ссылке, Microsoft рекомендует «, что вы создайте экземпляры XmlWriter с помощью метода XmlWriter.Create и класса XmlWriterSettings. " В этом случае ответ, предоставленный @OndrejSvejdar, будет соответствовать этой рекомендации. – cokeman19

ответ

3

Я хотел бы использовать фабричный метод Create на XmlWriter класса, как:

var stringBuilder = new StringBuilder(); 
using(var writer = XmlWriter.Create(stringBuilder)) 
{ 
    new DataContractSerializer(typeof(BackgroundJobInfo)).WriteObject(writer, info) 
} 
+0

Почему вы не использовали 'StringWriter'? –

0

Или вы можете сделать это без XmlWriter

public static string Serialize(BackgroundJobInfo info) 
{ 
    string result = String.Empty; 

    using (var ms = new MemoryStream()) 
    { 
     var sw = new StreamWriter(ms); 

     DataContractSerializer dcs = new DataContractSerializer(typeof(BackgroundJobInfo)); 
     dcs.WriteObject(ms, info); 
     sw.Flush(); 

     ms.Position = 0; 
     var sr = new StreamReader(ms); 
     result = sr.ReadToEnd();    
    }    

    return result; 
} 
Смежные вопросы