Пример #1
0
 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));
     }
 }
Пример #2
0
        /// <summary>
        /// récupère l'objet dans la valise
        /// Le data du result contient l'objet
        /// </summary>
        /// <param name="objetsAttaches">Par couple : type objet, objet attachés aux sérializers</param>
        /// <returns></returns>
        public CResultAErreur GetObjet(params object[] objetsAttaches)
        {
            I2iSerializable objet  = null;
            MemoryStream    stream = new MemoryStream(m_data);

            BinaryReader           reader     = new BinaryReader(stream);
            CSerializerReadBinaire serializer = new CSerializerReadBinaire(reader);

            for (int nParam = 0; nParam < objetsAttaches.Length; nParam += 2)
            {
                serializer.AttacheObjet((Type)objetsAttaches[nParam], objetsAttaches[nParam + 1]);
            }
            CResultAErreur result = serializer.TraiteObject(ref objet);

            if (result)
            {
                result.Data = objet;
            }

            reader.Close();
            stream.Close();
            return(result);
        }