Indica che una classe può essere serializzata. La classe non può essere ereditata.
System.Attribute
System.SerializableAttribute
Spazio dei nomi: System
Assembly: mscorlib (in mscorlib.dll)
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Enum Or AttributeTargets.Delegate, Inherited := False)> _ <ComVisibleAttribute(True)> _ Public NotInheritable Class SerializableAttribute _ Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Delegate, Inherited = false)] [ComVisibleAttribute(true)] public sealed class SerializableAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Struct|AttributeTargets::Enum|AttributeTargets::Delegate, Inherited = false)] [ComVisibleAttribute(true)] public ref class SerializableAttribute sealed : public Attribute
[<Sealed>] [<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Delegate, Inherited = false)>] [<ComVisibleAttribute(true)>] type SerializableAttribute = class inherit Attribute end
Il tipo SerializableAttribute espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
SerializableAttribute | Inizializza una nuova istanza della classe SerializableAttribute. |
| Nome | Descrizione | |
|---|---|---|
|
TypeId | Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. (Ereditato da Attribute) |
| Nome | Descrizione | |
|---|---|---|
|
Equals | Infrastruttura. Restituisce un valore che indica se l'istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
|
Finalize | Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object) |
|
GetHashCode | Restituisce il codice hash per l'istanza. (Ereditato da Attribute) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
IsDefaultAttribute | Quando è sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito della classe derivata. (Ereditato da Attribute) |
|
Match | Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute) |
|
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
| Nome | Descrizione | |
|---|---|---|
|
_Attribute.GetIDsOfNames | Esegue il mapping di un set di nomi a un set corrispondente di ID di invio. (Ereditato da Attribute) |
|
_Attribute.GetTypeInfo | Recupera le informazioni sul tipo relative a un oggetto, che possono essere utilizzate per ottenere informazioni sul tipo relative a un'interfaccia. (Ereditato da Attribute) |
|
_Attribute.GetTypeInfoCount | Recupera il numero delle interfacce di informazioni di tipo fornite da un oggetto (0 o 1). (Ereditato da Attribute) |
|
_Attribute.Invoke | Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute) |
Applicare la classe SerializableAttribute a un tipo per indicare che le istanze di questo tipo possono essere serializzate. In Common Language Runtime viene generata un'eccezione SerializationException se a uno dei tipi nel grafico degli oggetti da serializzare non è applicata la classe SerializableAttribute.
Applicare l'attributo SerializableAttribute anche quando la classe implementa anche l'interfaccia ISerializable per controllare il processo di serializzazione.
Tutti i campi pubblici e privati in un tipo che sono contrassegnati dall'attributo SerializableAttribute sono serializzati per impostazione predefinita, a meno che il tipo non implementi l'interfaccia ISerializable per sottoporre a override il processo di serializzazione. Il processo di serializzazione predefinito esclude i campi contrassegnati con l'attributo NonSerializedAttribute. Se un campo di un tipo serializzabile contiene un puntatore, un handle o un'altra struttura di dati specifica di un particolare ambiente e non può essere ricostituito in modo significativo in un diverso ambiente, è possibile applicare al campo l'attributo NonSerializedAttribute.
Per ulteriori informazioni sull'utilizzo degli attributi, vedere Estensione di metadati mediante attributi. Per ulteriori informazioni sulla serializzazione, vedere System.Runtime.Serialization.
Nell'esempio riportato di seguito viene descritta la serializzazione di un oggetto contrassegnato con l'attributo SerializableAttribute. Per utilizzare la classe BinaryFormatter invece della classe SoapFormatter, rimuovere il commento dalle righe appropriate.
Imports System Imports System.IO Imports System.Runtime.Serialization Imports System.Runtime.Serialization.Formatters.Soap Public Class Test Public Shared Sub Main() ' Creates a new TestSimpleObject object. Dim obj As New TestSimpleObject() Console.WriteLine("Before serialization the object contains: ") obj.Print() ' Opens a file and serializes the object into it in binary format. Dim stream As Stream = File.Open("data.xml", FileMode.Create) Dim formatter As New SoapFormatter() formatter.Serialize(stream, obj) stream.Close() ' Empties obj. obj = Nothing ' Opens file "data.xml" and deserializes the object from it. stream = File.Open("data.xml", FileMode.Open) formatter = New SoapFormatter() obj = CType(formatter.Deserialize(stream), TestSimpleObject) stream.Close() Console.WriteLine("") Console.WriteLine("After deserialization the object contains: ") obj.Print() End Sub 'Main End Class 'Test ' A test object that needs to be serialized. <Serializable()> Public Class TestSimpleObject Public member1 As Integer Public member2 As String Public member3 As String Public member4 As Double ' A member that is not serialized. <NonSerialized()> Public member5 As String Public Sub New() member1 = 11 member2 = "hello" member3 = "hello" member4 = 3.14159265 member5 = "hello world!" End Sub 'New Public Sub 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) End Sub 'Print End Class 'TestSimpleObject
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); } }
#using <system.dll> #using <system.messaging.dll> #using <System.Runtime.Serialization.Formatters.Soap.dll> using namespace System; using namespace System::IO; using namespace System::Runtime::Serialization::Formatters::Soap; // A test object that needs to be serialized. [Serializable] ref class TestSimpleObject { private: int member1; String^ member2; String^ member3; double member4; public: // A field that is not serialized. [NonSerialized] String^ member5; TestSimpleObject() { member1 = 11; member2 = "hello"; member3 = "hello"; member4 = 3.14159265; member5 = "hello world!"; } 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 ); } }; int main() { //Creates a new TestSimpleObject object. TestSimpleObject^ obj = gcnew 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 = gcnew SoapFormatter; //BinaryFormatter* formatter = new BinaryFormatter(); formatter->Serialize( stream, obj ); stream->Close(); //Empties obj. obj = nullptr; //Opens file S"data.xml" and deserializes the object from it. stream = File::Open( "data.xml", FileMode::Open ); formatter = gcnew SoapFormatter; //formatter = new BinaryFormatter(); obj = dynamic_cast<TestSimpleObject^>(formatter->Deserialize( stream )); stream->Close(); Console::WriteLine( "" ); Console::WriteLine( "After deserialization the object contains: " ); obj->Print(); }
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supportato in: 4, 3.5 SP1Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.