<p>Note importante</p>
<p><a href="https://learn.microsoft.com/en-us/dotnet/api/system.runtime.serialization.formatters.binary.binaryformatter?view=net-5.0">BinaryFormatter</a> a ete deprecie et ne sera plus disponible dans .NET apres novembre 2023. Voir <a href="https://github.com/dotnet/designs/blob/main/accepted/2020/better-obsoletion/binaryformatter-obsoletion.md">Strategie d’obsolescence de BinaryFormatter</a></p>
<p>Nous avons vu plusieurs approches differentes, mais nous utilisons une methode utilitaire generique comme suit :</p>
<pre><code class="lang-auto">public static T DeepClone<T>(this T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T) formatter.Deserialize(ms);
}
}
</code></pre>
<p>Notes :</p>
<ul>
<li></li>
</ul>
<p>Votre classe DOIT etre marquee comme <code>[Serializable]</code> pour que cela fonctionne.</p>
<ul>
<li></li>
</ul>
<p>Votre fichier source doit inclure le code suivant :</p>
<pre><code class="lang-auto"> using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
</code></pre>