Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe SerializableAttribute

 

Data di pubblicazione: ottobre 2016

Indica che una classe può essere serializzata. Questa classe non può essere ereditata.

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

System.Object
  System.Attribute
    System.SerializableAttribute

[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate, 
	Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class SerializableAttribute : Attribute

NomeDescrizione
System_CAPS_pubmethodSerializableAttribute()

Inizializza una nuova istanza della classe SerializableAttribute.

NomeDescrizione
System_CAPS_pubpropertyTypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.(Ereditato da Attribute.)

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Restituisce un valore che indica se questa istanza è uguale ad un oggetto specificato. (Ereditato da Attribute.)

System_CAPS_pubmethodGetHashCode()

Restituisce il codice hash per questa istanza. (Ereditato da Attribute.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodIsDefaultAttribute()

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

System_CAPS_pubmethodMatch(Object)

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

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

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

Esegue il mapping di un set di nomi a un corrispondente set di identificatori di dispatch. (Ereditato da Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sui tipi per un oggetto, che possono essere utilizzate per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sui tipi che un oggetto fornisce (0 o 1). (Ereditato da Attribute.)

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

Fornisce l'accesso alle proprietà ed ai metodi esposti da un oggetto. (Ereditato da Attribute.)

Applicare il SerializableAttribute dell'attributo a un tipo per indicare che le istanze di questo tipo possono essere serializzate. Common language runtime genera un'eccezione SerializationException se qualsiasi tipo di grafico degli oggetti da serializzare è privo di SerializableAttribute applicato l'attributo.

Applicare il SerializableAttribute attributo anche se la classe implementa inoltre il ISerializable interfaccia per controllare il processo di serializzazione.

Quando si applica l'attributo SerializableAttribute a un tipo, tutti i campi pubblici e privati vengono serializzati per impostazione predefinita. È possibile controllare la serializzazione in modo più granulare implementando l'interfaccia ISerializable per eseguire l'override del processo di serializzazione.

In alternativa, è possibile escludere i campi dalla serializzazione applicando l'attributo NonSerializedAttribute al campo. Se un campo di un tipo serializzabile contiene un puntatore, un handle o un'altra struttura di dati che è specifico di un particolare ambiente e non può essere ricostituita in modo significativo in un ambiente diverso, quindi è possibile applicare il NonSerializedAttribute attributo a tale campo.

Per ulteriori informazioni sull'utilizzo degli attributi, vedere Estensione di metadati mediante attributi. Per altre informazioni sulla serializzazione, vedere System.Runtime.Serialization.

Nell'esempio seguente viene illustrata la serializzazione di un oggetto che è contrassegnato con il SerializableAttribute attributo. Utilizzare il BinaryFormatter anziché il SoapFormatter, rimuovere il commento le righe appropriate.

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
Disponibile da 1.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: