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);
        }