NonSerializedAttribute Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menunjukkan bahwa bidang kelas yang dapat diserialisasikan tidak boleh diserialisasikan. Kelas ini tidak dapat diwariskan.
public ref class NonSerializedAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Field, Inherited=false)]
public sealed class NonSerializedAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field, Inherited=true)]
public sealed class NonSerializedAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class NonSerializedAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field, Inherited=false)>]
type NonSerializedAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Field, Inherited=true)>]
type NonSerializedAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Field, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type NonSerializedAttribute = class
inherit Attribute
Public NotInheritable Class NonSerializedAttribute
Inherits Attribute
- Warisan
- Atribut
Contoh
Contoh berikut menunjukkan serialisasi SOAP objek yang ditandai dengan SerializableAttribute atribut , dan perilaku bidang yang ditandai dengan NonSerializedAttribute dalam objek yang diserialisasikan.
Note
Kode menggunakan kelas untuk menserialisasikan SoapFormatter objek. Kelas ditemukan dalam file system.runtime.serialization.formatters.soap.dll, yang tidak dimuat secara default ke dalam proyek. Untuk menjalankan kode, Anda harus menambahkan referensi ke DLL ke proyek Anda.
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
Keterangan
Saat menggunakan BinaryFormatter kelas atau SoapFormatter untuk menserialisasikan objek, gunakan NonSerializedAttribute atribut untuk mencegah bidang diserialisasikan. Misalnya, Anda dapat menggunakan atribut ini untuk mencegah serialisasi data sensitif.
Objek target untuk NonSerializedAttribute atribut adalah bidang publik dan privat dari kelas yang dapat diserialisasikan. Secara default, kelas tidak dapat diserialisasikan kecuali ditandai dengan SerializableAttribute. Selama proses serialisasi, semua bidang publik dan privat kelas diserialisasikan secara default. Bidang yang ditandai dengan NonSerializedAttribute dikecualikan selama serialisasi. Jika Anda menggunakan XmlSerializer kelas untuk membuat serialisasi objek, gunakan XmlIgnoreAttribute kelas untuk mendapatkan fungsionalitas yang sama. Atau, terapkan ISerializable antarmuka untuk mengontrol proses serialisasi secara eksplisit. Perhatikan bahwa kelas yang menerapkan ISerializable masih harus ditandai dengan SerializableAttribute.
Untuk menerapkan kelas ke NonSerializedAttribute peristiwa, atur lokasi atribut ke bidang, seperti yang ditunjukkan dalam kode C# berikut.
[field:NonSerializedAttribute()]
public event ChangedEventHandler Changed;
Jika bidang tidak diserialisasikan, tetapi masih memerlukan nilai default yang harus disediakan setelah deserialisasi, Anda dapat membuat metode yang menyediakan bidang dengan nilai, lalu menerapkannya OnDeserializedAttribute ke metode .
Untuk informasi selengkapnya tentang menggunakan atribut, lihat Atribut.
Note
Atribut ini tidak berlaku untuk serialisasi JSON menggunakan System.Text.Json.
Konstruktor
| Nama | Deskripsi |
|---|---|
| NonSerializedAttribute() |
Menginisialisasi instans baru dari kelas NonSerializedAttribute. |
Properti
| Nama | Deskripsi |
|---|---|
| TypeId |
Ketika diimplementasikan dalam kelas turunan, mendapatkan pengidentifikasi unik untuk Attributeini. (Diperoleh dari Attribute) |
Metode
| Nama | Deskripsi |
|---|---|
| Equals(Object) |
Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
| GetHashCode() |
Mengembalikan kode hash untuk instans ini. (Diperoleh dari Attribute) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| IsDefaultAttribute() |
Ketika ditimpa dalam kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan. (Diperoleh dari Attribute) |
| Match(Object) |
Saat ditimpa dalam kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai. (Diperoleh dari Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka. (Diperoleh dari Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1). (Diperoleh dari Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Menyediakan akses ke properti dan metode yang diekspos oleh objek. (Diperoleh dari Attribute) |