public CValise2iSerializable(I2iSerializable objetSource) { MemoryStream stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(stream); CSerializerSaveBinaire serializer = new CSerializerSaveBinaire(writer); serializer.TraiteObject(ref objetSource); m_data = stream.GetBuffer(); writer.Close(); stream.Close(); }
public static void CopieTo(I2iSerializable source, I2iSerializable cible, Dictionary <Type, object> tableObjetsPourSerializer) { try { if (source == null) { return; } if (cible == null) { return; } MemoryStream stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(stream); C2iSerializer serializer = new CSerializerSaveBinaire(writer); CResultAErreur result = source.Serialize(serializer); if (result) { stream.Seek(0, SeekOrigin.Begin); BinaryReader reader = new BinaryReader(stream); serializer = new CSerializerReadBinaire(reader); if (tableObjetsPourSerializer != null) { foreach (KeyValuePair <Type, object> keyVal in tableObjetsPourSerializer) { serializer.AttacheObjet(keyVal.Key, keyVal.Value); } } result = cible.Serialize(serializer); reader.Close(); } writer.Close(); I2iCloneableAvecTraitementApresClonage clone = cible as I2iCloneableAvecTraitementApresClonage; if (clone != null) { clone.TraiteApresClonage(source); } } catch (Exception e) { string strTmp = e.ToString(); Console.WriteLine(I.T("Serializable copy error @1|30043 ", strTmp)); } }
//---------------------------------------------------------------------------------- public static CResultAErreur SaveToFile(I2iSerializable objet, string strSignatureFichier, string strNomFichier) { CResultAErreur result = CResultAErreur.True; FileStream stream = null; try { stream = new FileStream(strNomFichier, FileMode.Create, FileAccess.Write, FileShare.None); } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); result.EmpileErreur(I.T("File opening error|30060")); } try { BinaryWriter writer = new BinaryWriter(stream); writer.Write(strSignatureFichier); CSerializerSaveBinaire serializer = new CSerializerSaveBinaire(writer); result = objet.Serialize(serializer); writer.Close(); } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); result.EmpileErreur(I.T("File writing error|30063")); } finally { try { stream.Close(); } catch {} } return(result); }