Quantcast
Channel: Serialize an object to string - Stack Overflow
Viewing all articles
Browse latest Browse all 12

Answer by dtb for Serialize an object to string

$
0
0

Use a StringWriter instead of a StreamWriter:

public static string SerializeObject<T>(this T toSerialize){    XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());    using(StringWriter textWriter = new StringWriter())    {        xmlSerializer.Serialize(textWriter, toSerialize);        return textWriter.ToString();    }}

Note, it is important to use toSerialize.GetType() instead of typeof(T) in XmlSerializer constructor: if you use the first one the code covers all possible subclasses of T (which are valid for the method), while using the latter one will fail when passing a type derived from T.  Here is a link with some example code that motivate this statement, with XmlSerializer throwing an Exception when typeof(T) is used, because you pass an instance of a derived type to a method that calls SerializeObject that is defined in the derived type's base class: http://ideone.com/1Z5J1.

Also, Ideone uses Mono to execute code; the actual Exception you would get using the Microsoft .NET runtime has a different Message than the one shown on Ideone, but it fails just the same.


Viewing all articles
Browse latest Browse all 12

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>