Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe NonSerializedAttribute

Indica che un campo di una classe serializzabile non deve essere serializzato. Questa classe non può essere ereditata.

System.Object
  System.Attribute
    System.NonSerializedAttribute

Spazio dei nomi:  System
Assembly:  mscorlib (in mscorlib.dll)

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

Il tipo NonSerializedAttribute espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoNonSerializedAttributeInizializza una nuova istanza di NonSerializedAttribute classe.
In alto

  NomeDescrizione
Proprietà pubblicaTypeId Quando implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute. (Ereditato da Attribute)
In alto

  NomeDescrizione
Metodo pubblicoEqualsInfrastruttura. Restituisce un valore che indica se questa istanza è uguale ad un oggetto specificato. (Ereditato da Attribute)
Metodo pubblicoGetHashCode Restituisce il codice hash per questa istanza. (Ereditato da Attribute)
Metodo pubblicoGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoIsDefaultAttribute Quando viene eseguito l'override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute)
Metodo pubblicoMatch Quando viene eseguito l'override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute)
Metodo pubblicoToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto

  NomeDescrizione
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetIDsOfNames Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetTypeInfo Recupera le informazioni sui tipi per un oggetto, che possono essere utilizzate per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.GetTypeInfoCount Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato_Attribute.Invoke Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da Attribute)
In alto

Quando si utilizzano BinaryFormatter o SoapFormatter le classi per serializzare un oggetto, utilizzano NonSerializedAttribute attributo per impedire un campo vengano serializzati. Ad esempio, è possibile utilizzare questo attributo per impedire la serializzazione dei dati privati.

Gli oggetti per NonSerializedAttribute l'attributo è campi pubblici e privati di una classe serializzabile. Per impostazione predefinita, le classi non sono serializzabili a meno che non siano contrassegnate con SerializableAttribute. Durante il processo di serializzazione tutti i campi pubblici e privati di una classe vengono serializzati per impostazione predefinita. campi contrassegnati con NonSerializedAttribute essere esclusa durante la serializzazione. Se si utilizzano XmlSerializer una classe per serializzare un oggetto, utilizzare XmlIgnoreAttribute una classe per ottenere la stessa funzionalità. In alternativa, la distribuzione ISerializable collegare in modo esplicito per controllare il processo di serializzazione. Si noti che le classi che implementano ISerializable deve comunque essere contrassegnato con SerializableAttribute.

Per applicare NonSerializedAttribute classe a un evento, impostare il percorso dell'attributo per un campo, come illustrato nel codice c# seguente.

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

Se un campo non viene serializzato, ma è comunque necessario un valore predefinito che deve essere fornito dopo la deserializzazione, è possibile creare un metodo che fornisce il campo con un valore, quindi si applica OnDeserializedAttribute al metodo.

Per ulteriori informazioni sull'utilizzo degli attributi, vedere Estensione di metadati mediante attributi.

Il seguente esempio viene illustrata la serializzazione di un oggetto contrassegnato con SerializableAttribute attributo e il comportamento di un campo contrassegnato con NonSerializedAttribute nell'oggetto serializzato.

NotaNota

il codice utilizza SoapFormatter una classe per serializzare l'oggetto. La classe è disponibile in system.runtime.serialization.formatters.soap.dll, che non viene caricato in un progetto per impostazione predefinita. Per eseguire il codice, è necessario aggiungere un riferimento alla DLL al progetto.


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

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft