使用
StringWriter而不是
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(); }}请注意,在XmlSerializer构造函数中使用
toSerialize.GetType()而不是使用它很重要
typeof(T):如果使用第一个,则代码将覆盖的所有可能的子类
T(对于该方法有效),而使用后一个,则在传递从派生的类型时将失败
T。这是一些示例代码的链接,这些代码可以激发该语句并
XmlSerializer使用
Exceptionwhen
typeof(T),因为您将派生类型的实例传递给调用在派生类型的基类中定义的SerializeObject的方法:http:// ideone
.com / 1Z5J1。
另外,Ideone使用Mono执行代码;
Exception使用Microsoft
.NET运行时所得到的实际
Message结果与Ideone上显示的结果有所不同,但是失败相同。



