public void DataTableSerialize() { DataTable dt = new DataTable("MyTable"); dt.Columns.Add("IntColumn", typeof(int)); dt.Columns.Add("StringColumn", typeof(string)); dt.Columns.Add("BoolColumn", typeof(bool)); dt.Columns.Add("DateTimeColumn", typeof(DateTime)); dt.Columns.Add("DoubleColumn", typeof(double)); dt.Rows.Add((int)32, "row 1", true, new DateTime(2009, 9, 1), 213.45d); dt.Rows.Add((int)64, "row 2", false, new DateTime(2005, 5, 15), 124.95d); Serializer s = new Serializer(); s.Settings.ExpressionHandlers.Insert(0, new DataTableExpressionHandler()); s.Settings.Types.RegisterTypeConverter <Type>(new TypeToStringConverter()); // for DataType property of Column string result = s.Serialize(dt); DataTable dtResult = s.Deserialize <DataTable>(result); DataSet expected = new DataSet(); expected.Tables.Add(dt); DataSet actual = new DataSet(); actual.Tables.Add(dtResult); DataAssert.AreDataEqual(expected, actual); }