Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source

NonSerializedAttribute, classe

Indique qu'un champ d'une classe sérialisable ne doit pas être sérialisé. Cette classe ne peut pas être héritée.

System.Object
  System.Attribute
    System.NonSerializedAttribute

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)

[AttributeUsageAttribute(AttributeTargets.Field, Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class NonSerializedAttribute : Attribute

Le type NonSerializedAttribute expose les membres suivants.

  NomDescription
Méthode publiqueNonSerializedAttributeInitialise une nouvelle instance de la classe NonSerializedAttribute.
Début

  NomDescription
Propriété publiqueTypeIdLors de son implémentation dans une classe dérivée, obtient un identificateur unique pour Attribute. (Hérité de Attribute.)
Début

  NomDescription
Méthode publiqueEqualsInfrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode protégéeFinalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publiqueGetHashCodeRetourne le code de hachage pour cette instance. (Hérité de Attribute.)
Méthode publiqueGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publiqueIsDefaultAttributeEn cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute.)
Méthode publiqueMatchEn cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode protégéeMemberwiseCloneCrée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publiqueToStringRetourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Début

  NomDescription
Implémentation d'interface expliciteMéthode privée_Attribute.GetIDsOfNamesMappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée_Attribute.GetTypeInfoRécupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée_Attribute.GetTypeInfoCountRécupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée_Attribute.InvokeFournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.)
Début

Lorsque vous utilisez les classes BinaryFormatter ou SoapFormatter pour sérialiser un objet, utilisez l'attribut NonSerializedAttribute pour empêcher la sérialisation d'un champ. Par exemple, vous pouvez utiliser cet attribut pour empêcher la sérialisation de données sensibles.

Les objets cibles de l'attribut NonSerializedAttribute sont les champs publics et privés d'une classe sérialisable. Les classes ne sont pas par défaut sérialisables, sauf si elles sont marquées avec SerializableAttribute. Au cours du processus de sérialisation, tous les champs publics et privés d'une classe sont sérialisés par défaut. Les champs marqués avec NonSerializedAttribute sont exclus pendant la sérialisation. Si vous utilisez la classe XmlSerializer pour sérialiser un objet, utilisez la classe XmlIgnoreAttribute pour obtenir les mêmes fonctionnalités. Vous pouvez également implémenter l'interface ISerializable pour contrôler explicitement le processus de sérialisation. Les classes qui implémentent ISerializable doivent toujours être marquées avec SerializableAttribute.

Pour appliquer la classe NonSerializedAttribute à un événement, affectez au champ l'attribut d'emplacement, comme illustré dans le code C# suivant.

[field:NonSerializedAttribute()] 
public event ChangedEventHandler Changed;

Si un champ n'est pas sérialisé, mais qu'il requiert encore une valeur par défaut devant être fournie après la désérialisation, vous pouvez créer une méthode qui fournit une valeur au champ, puis appliquer le OnDeserializedAttribute à la méthode.

Pour plus d'informations sur l'utilisation des attributs, consultez Extension des métadonnées à l'aide des attributs.

L'exemple suivant illustre la sérialisation d'un objet marqué par l'attribut SerializableAttribute et le comportement d'un champ marqué par l'attribut NonSerializedAttribute dans l'objet sérialisé.

RemarqueRemarque

Le code utilise la classe SoapFormatter pour sérialiser l'objet. La classe est recherchée dans le fichier system.runtime.serialization.formatters.soap.dll, lequel n'est pas chargé par défaut dans un projet. Pour exécuter le code, vous devez ajouter une référence à la DLL dans votre projet.


using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap;
//using System.Runtime.Serialization.Formatters.Binary;

public class Test {
   public static void Main()  {

      //Creates a new TestSimpleObject object.
      TestSimpleObject obj = new TestSimpleObject();

      Console.WriteLine("Before serialization the object contains: ");
      obj.Print();

      //Opens a file and serializes the object into it in binary format.
      Stream stream = File.Open("data.xml", FileMode.Create);
      SoapFormatter formatter = new SoapFormatter();

      //BinaryFormatter formatter = new BinaryFormatter();

      formatter.Serialize(stream, obj);
      stream.Close();

      //Empties obj.
      obj = null;

      //Opens file "data.xml" and deserializes the object from it.
      stream = File.Open("data.xml", FileMode.Open);
      formatter = new SoapFormatter();

      //formatter = new BinaryFormatter();

      obj = (TestSimpleObject)formatter.Deserialize(stream);
      stream.Close();

      Console.WriteLine("");
      Console.WriteLine("After deserialization the object contains: ");
      obj.Print();
   }
}


// A test object that needs to be serialized.
[Serializable()]		
public class TestSimpleObject  {

    public int member1;
    public string member2;
    public string member3;
    public double member4;

    // A field that is not serialized.
    [NonSerialized()] public string member5; 

    public TestSimpleObject() {

        member1 = 11;
        member2 = "hello";
        member3 = "hello";
        member4 = 3.14159265;
        member5 = "hello world!";
    }


    public void Print() {

        Console.WriteLine("member1 = '{0}'", member1);
        Console.WriteLine("member2 = '{0}'", member2);
        Console.WriteLine("member3 = '{0}'", member3);
        Console.WriteLine("member4 = '{0}'", member4);
        Console.WriteLine("member5 = '{0}'", member5);
    }
}


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft