public void WriteXmlSchema (XmlWriter writer) { DataSet ds = DataSet; DataSet tmp = null; try { if (ds == null) { tmp = ds = new DataSet (); ds.Tables.Add (this); } DataTableCollection col = new DataTableCollection (ds); col.Add (this); XmlSchemaWriter.WriteXmlSchema (ds, writer, col, null); } finally { if (tmp != null) ds.Tables.Remove (this); } }
GetObjectData (SerializationInfo info, StreamingContext context) { if (RemotingFormat == SerializationFormat.Xml) { DataSet dset; if (dataSet != null) dset = dataSet; else { dset = new DataSet ("tmpDataSet"); dset.Tables.Add (this); } StringWriter sw = new StringWriter (); XmlTextWriter tw = new XmlTextWriter (sw); tw.Formatting = Formatting.Indented; dset.WriteIndividualTableContent (tw, this, XmlWriteMode.DiffGram); tw.Close (); StringWriter sw2 = new StringWriter (); DataTableCollection tables = new DataTableCollection (dset); tables.Add (this); XmlSchemaWriter.WriteXmlSchema (dset, new XmlTextWriter (sw2), tables, null); sw2.Close (); info.AddValue ("XmlSchema", sw2.ToString(), typeof(string)); info.AddValue ("XmlDiffGram", sw.ToString(), typeof(string)); } else /*if (RemotingFormat == SerializationFormat.Binary)*/ { BinarySerializeProperty (info); if (dataSet == null) { for (int i = 0; i < Columns.Count; i++) { info.AddValue ("DataTable.DataColumn_" + i + ".Expression", Columns[i].Expression); } BinarySerialize (info, "DataTable_0."); } } }
/// <summary> /// This member is only meant to support Mono's infrastructure /// </summary> void ISerializable.GetObjectData (SerializationInfo info, StreamingContext context) { DataSet dset; if (dataSet != null) dset = dataSet; else { dset = new DataSet ("tmpDataSet"); dset.Tables.Add (this); } StringWriter sw = new StringWriter (); XmlTextWriter tw = new XmlTextWriter (sw); tw.Formatting = Formatting.Indented; dset.WriteIndividualTableContent (tw, this, XmlWriteMode.DiffGram); tw.Close (); StringWriter sw2 = new StringWriter (); DataTableCollection tables = new DataTableCollection (dset); tables.Add (this); XmlSchemaWriter.WriteXmlSchema (dset, new XmlTextWriter (sw2), tables, null); sw2.Close (); info.AddValue ("XmlSchema", sw2.ToString(), typeof(string)); info.AddValue ("XmlDiffGram", sw.ToString(), typeof(string)); }