Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

NonSerializedAttribute classe

 

Date de publication : novembre 2016

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

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

System.Object
  System.Attribute
    System.NonSerializedAttribute

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

NomDescription
System_CAPS_pubmethodNonSerializedAttribute()

Initialise une nouvelle instance de la classe NonSerializedAttribute.

NomDescription
System_CAPS_pubpropertyTypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.(Hérité de Attribute.)

NomDescription
System_CAPS_pubmethodEquals(Object)

Cette API prend en charge l’infrastructure de produit et n’est pas destinée à être utilisée directement depuis votre code. Retourne une valeur qui indique si cette instance est égale à un objet spécifié.(Hérité de Attribute.)

System_CAPS_pubmethodGetHashCode()

Retourne le code de hachage de cette instance.(Hérité de Attribute.)

System_CAPS_pubmethodGetType()

Obtient le Type de l'instance actuelle.(Hérité de Object.)

System_CAPS_pubmethodIsDefaultAttribute()

En 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.)

System_CAPS_pubmethodMatch(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance équivaut à un objet spécifié.(Hérité de Attribute.)

System_CAPS_pubmethodToString()

Retourne une chaîne qui représente l'objet actuel.(Hérité de Object.)

NomDescription
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ré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.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.(Hérité de Attribute.)

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

Les objets cibles de le NonSerializedAttribute attribut sont des champs publics et privés d’une classe sérialisable. Par défaut, les classes ne sont pas sérialisables, sauf si elles sont marquées avec SerializableAttribute. Pendant le 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 XmlSerializer classe pour sérialiser un objet, utilisez la XmlIgnoreAttribute classe pour obtenir les mêmes fonctionnalités. Vous pouvez également implémenter le ISerializable de l’interface afin de contrôler explicitement le processus de sérialisation. Notez que les classes qui implémentent ISerializable doivent toujours être marquées avec SerializableAttribute.

Pour appliquer le NonSerializedAttribute à un événement de classe, définissez l’attribut d’emplacement au champ, 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 doit ê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 d'attributs, consultez Extension des métadonnées à l'aide des attributs.

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

System_CAPS_noteRemarque

Le code utilise la SoapFormatter classe pour sérialiser l’objet. La classe se trouve 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 à 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
Disponible depuis 1.1

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: