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 NonSerializedAttribute, 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é, consultez Sécurité et sérialisation.
Voir aussi
Sérialisation binaire | Accès aux objets dans d'autres domaines d'application à l'aide de .NET Remoting | Sérialisation XML et SOAP | Sécurité et sérialisation