SerializableAttribute Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Azt jelzi, hogy egy osztály bináris vagy XML-szerializálással szerializálható. Ez az osztály nem örökölhető.
public ref class SerializableAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Struct, Inherited=false)]
public sealed class SerializableAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Struct, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class SerializableAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Struct, Inherited=false)>]
type SerializableAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Struct, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SerializableAttribute = class
inherit Attribute
Public NotInheritable Class SerializableAttribute
Inherits Attribute
- Öröklődés
- Attribútumok
Példák
Az alábbi példa egy attribútummal SerializableAttribute megjelölt objektum SOAP szerializálását mutatja be.
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Soap;
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();
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();
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);
}
}
open System
open System.IO
open System.Runtime.Serialization.Formatters.Soap
// A test object that needs to be serialized.
[<Serializable>]
type TestSimpleObject() =
let member1 = 11
let member2 = "hello"
let member3 = "hello"
let member4 = 3.14159265
// A field that is not serialized.
[<NonSerialized>]
let member5 = "hello world!"
member _.Print() =
printfn $"member1 = '{member1}'"
printfn $"member2 = '{member2}'"
printfn $"member3 = '{member3}'"
printfn $"member4 = '{member4}'"
printfn $"member5 = '{member5}'"
[<EntryPoint>]
let main _ =
// Creates a new TestSimpleObject object.
let obj = TestSimpleObject()
printfn "Before serialization the object contains: "
obj.Print()
// Opens a file and serializes the object into it in binary format.
let stream = File.Open("data.xml", FileMode.Create)
let formatter = SoapFormatter()
formatter.Serialize(stream, obj)
stream.Close()
// Opens file "data.xml" and deserializes the object from it.
let stream = File.Open("data.xml", FileMode.Open)
let formatter = new SoapFormatter()
let obj = formatter.Deserialize stream :?> TestSimpleObject
stream.Close()
printfn "\nAfter deserialization the object contains: "
obj.Print()
0
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
End Class
' 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
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
End Class
Megjegyzések
Alkalmazza az SerializableAttribute attribútumot egy típusra annak jelzésére, hogy az ilyen típusú példányok bináris vagy XML-szerializálással szerializálhatók. A közös nyelvi futtatókörnyezet akkor aktiválódik SerializationException , ha a szerializált objektumok gráfjának bármely típusa nem alkalmazza az SerializableAttribute attribútumot.
Alkalmazza az SerializableAttribute attribútumot akkor is, ha az osztály a ISerializable bináris szerializálási folyamat vezérléséhez az interfészt is implementálja.
Ha az attribútumot egy típusra alkalmazza, a SerializableAttribute rendszer alapértelmezés szerint minden privát és nyilvános mezőt szerializál. A bináris szerializálást részletesebben is szabályozhatja a ISerializable szerializálási folyamat felülbírálásához szükséges felület implementálásával.
Vagy kizárhatja a mezőket a szerializálásból az NonSerializedAttribute attribútum mezőre való alkalmazásával. Ha egy bináris szerializálható típusú mező tartalmaz egy mutatót, egy leírót vagy más, egy adott környezetre jellemző adatstruktúrát, és nem lehet értelmesen újrakonfigurálni egy másik környezetben, akkor érdemes lehet alkalmazni az attribútumot erre a NonSerializedAttribute mezőre.
Az attribútumok használatáról további információt az Attribútumok című témakörben talál. A bináris szerializálással kapcsolatos további információkért lásd: System.Runtime.Serialization.
Note
Ez az attribútum nem vonatkozik a JSON-szerializálásra a következő használatával System.Text.Json: .
Konstruktorok
| Name | Description |
|---|---|
| SerializableAttribute() |
Inicializálja a SerializableAttribute osztály új példányát. |
Tulajdonságok
| Name | Description |
|---|---|
| TypeId |
Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap. (Öröklődés forrása Attribute) |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal. (Öröklődés forrása Attribute) |
| GetHashCode() |
A példány kivonatkódját adja vissza. (Öröklődés forrása Attribute) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| IsDefaultAttribute() |
Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke. (Öröklődés forrása Attribute) |
| Match(Object) |
Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e. (Öröklődés forrása Attribute) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
Explicit interfész-implementációk
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Névkészletet képez le a küldési azonosítók megfelelő készletére. (Öröklődés forrása Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók. (Öröklődés forrása Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1). (Öröklődés forrása Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz. (Öröklődés forrása Attribute) |