Bonjour.
Je cherchais une méthode permettant de faire une copie profonde (DeepClone) d'objets en C#.

Sur :
http://www.code-magazine.com/Article...uickid=0601121


J'ai trouvé la méthode suivant qui me parait vraiment chouette :

// C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static object DeepClone(
  object obj) 
{
  // Create a "deep" clone of 
  // an object. That is, copy not only
  // the object and its pointers
  // to other objects, but create 
  // copies of all the subsidiary 
  // objects as well. This code even 
  // handles recursive relationships.
 
  object objResult = null;
  using (MemoryStream  ms = 
        new MemoryStream())
  {
    BinaryFormatter  bf = 
      new BinaryFormatter();
    bf.Serialize(ms, obj);
 
    // Rewind back to the beginning 
    // of the memory stream. 
    // Deserialize the data, then
    // close the memory stream.
    ms.Position = 0;
    objResult = bf.Deserialize(ms);
  }
  return objResult;
}
Quelqu'un l'a t-il expérimenté ?

J'aimerai avoir vos critiques sur cette méthode qui me parait parfaite.
Il y a t-il des cas ou cela risque de ne pas marcher ?

Merci pour vos réponses.