public void TestResultTableSerialization() { var table = new ResultTable(); table.Columns.Add(new ResultColumnHeader("a", typeof(int))); table.Columns.Add(new ResultColumnHeader("b", typeof(string))); table.Columns.Add(new ResultColumnHeader("c", typeof(string))); var row1 = table.NewRow(); row1.Add(new object[] { 1, "abc", "DEF" }); table.Rows.Add(row1); var row2 = table.NewRow(); row2.Add(new object[] { 2, DBNull.Value, "xyz" }); table.Rows.Add(row2); string xmlRes; using (var memStm = new MemoryStream()) { var types = new List <Type> { typeof(DBNull) }; var serializer = new DataContractSerializer(typeof(ResultTable), types); var settings = new XmlWriterSettings { Indent = true }; using (var w = XmlWriter.Create(memStm, settings)) serializer.WriteObject(w, table); memStm.Seek(0, SeekOrigin.Begin); using (var streamReader = new StreamReader(memStm)) xmlRes = streamReader.ReadToEnd(); } var jsonRes = JsonConvert.SerializeObject(table, Newtonsoft.Json.Formatting.Indented); Assert.NotNull(xmlRes); Assert.NotNull(jsonRes); output.WriteLine(table.ToString()); output.WriteLine(xmlRes); output.WriteLine(jsonRes); }