public static byte[] SerializeBinary(object[] obj) { if (obj == null || obj.Length == 0) return new byte[] { }; for (int i = 0; i < obj.Length; i++) { if (obj[i] != null) { if (obj[i] is DataSet) obj[i] = new DataSetSurrogate((DataSet)obj[i]); else if (obj[i] is DataTable) obj[i] = new DataTableSurrogate((DataTable)obj[i]); } } BinaryFormatter se = new BinaryFormatter(); MemoryStream memStream = new MemoryStream(); se.Serialize(memStream, obj); byte[] bobj = memStream.ToArray(); memStream.Close(); return bobj; }
/* Constructs a DataSetSurrogate object from a DataSet. */ public DataSetSurrogate(DataSet ds) { if (ds == null) { throw new ArgumentNullException("The parameter dataset is null"); } //DataSet properties _datasetName = ds.DataSetName; _namespace = ds.Namespace; _prefix = ds.Prefix; _caseSensitive = ds.CaseSensitive; _locale = ds.Locale; _enforceConstraints = ds.EnforceConstraints; //Tables, Columns, Rows _dataTableSurrogates = new DataTableSurrogate[ds.Tables.Count]; for (int i = 0; i < ds.Tables.Count; i++) { _dataTableSurrogates[i] = new DataTableSurrogate(ds.Tables[i]); } //ForeignKeyConstraints _fkConstraints = GetForeignKeyConstraints(ds); //Relations _relations = GetRelations(ds); //ExtendedProperties _extendedProperties = new Hashtable(); if (ds.ExtendedProperties.Keys.Count > 0) { foreach (object propertyKey in ds.ExtendedProperties.Keys) { _extendedProperties.Add(propertyKey, ds.ExtendedProperties[propertyKey]); } } }