Partager via


Sérialisation sélective

Une classe contient souvent des champs qui ne devraient pas être sérialisés. Supposons par exemple qu'une classe stocke un ID de thread dans une variable de membre. Lorsque la classe est désérialisée, il est possible que le thread pour lequel l'ID a été stocké lors de la sérialisation de la classe ne fonctionne plus ; la sérialisation de cette valeur n'a donc plus de sens. Vous pouvez éviter que les variables de membre ne soient sérialisées en les marquant avec l'attribut NonSerialized, comme suit.

[Serializable]
public class MyObject 
{
  public int n1;
  [NonSerialized] public int n2;
  public String str;
}

Si possible, faites en sorte qu'un objet pouvant contenir des données de sécurité sensibles soit non sérialisable. Si l'objet doit être sérialisé, appliquez l'attribut NonSerialized aux champs spécifiques qui stockent les données sensibles. Si vous n'excluez pas ces champs de la sérialisation, sachez que les données qu'ils contiennent seront exposées à tout code ayant l'autorisation de sérialiser. Pour plus d'informations sur l'écriture de code de sérialisation sécurisé, voir Sécurité et sérialisation.

Voir aussi

Concepts

Security and Serialization

Autres ressources

Sérialisation binaire
Objets distants
Sérialisation XML et SOAP