Files
BeWoPlaner/Report/AbstractBeWoReportObject.cs

29 lines
980 B
C#
Raw Normal View History

2016-06-27 01:45:38 +02:00
using System.IO;
using System.Xml.Serialization;
namespace BeWo.Report
{
public abstract class AbstractBeWoReportObject<T> where T : AbstractBeWoReportObject<T>
{
public U CloneToSubclass<U>() where U : T
{
using (var sr = new StreamReader(new MemoryStream()))
{
new XmlSerializer(typeof(T)).Serialize(sr.BaseStream, this);
sr.BaseStream.Seek(0, SeekOrigin.Begin);
string s = sr.ReadToEnd();
s = s.Replace("<" + typeof(T).Name + " xmlns:xsi", "<" + typeof(U).Name + " xmlns:xsi");
using (var sw = new StreamWriter(new MemoryStream()))
{
sw.Write(s);
sw.Flush();
sw.BaseStream.Seek(0, SeekOrigin.Begin);
return new XmlSerializer(typeof(U)).Deserialize(sw.BaseStream) as U;
}
}
}
}
}