İngilizce dilinde oku

Aracılığıyla paylaş


NonSerializedAttribute Sınıf

Tanım

Seri hale getirilebilir bir sınıfın alanının seri hale getirilmemesi gerektiğini gösterir. Bu sınıf devralınamaz.

C#
[System.AttributeUsage(System.AttributeTargets.Field, Inherited=false)]
public sealed class NonSerializedAttribute : Attribute
C#
[System.AttributeUsage(System.AttributeTargets.Field, Inherited=true)]
public sealed class NonSerializedAttribute : Attribute
C#
[System.AttributeUsage(System.AttributeTargets.Field, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class NonSerializedAttribute : Attribute
Devralma
NonSerializedAttribute
Öznitelikler

Örnekler

Aşağıdaki örnek, özniteliğiyle işaretlenmiş bir nesnenin seri hale getirilmesini SerializableAttribute ve serileştirilmiş nesnede ile NonSerializedAttribute işaretlenmiş bir alanın davranışını gösterir.

Not

Kod, nesnesini seri hale getirmek için sınıfını kullanır SoapFormatter . sınıfı, varsayılan olarak projeye yüklenmeyen system.runtime.serialization.formatters.soap.dll bulunur. Kodu çalıştırmak için, projenize DLL'ye bir başvuru eklemeniz gerekir.

C#
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);
    }
}

Açıklamalar

Bir nesneyi serileştirmek için veya sınıflarını kullanırkenBinaryFormatter, bir alanın seri hale getirilmesini önlemek için özniteliğini kullanınNonSerializedAttribute.SoapFormatter Örneğin, hassas verilerin seri hale getirilmesini önlemek için bu özniteliği kullanabilirsiniz.

özniteliğinin NonSerializedAttribute hedef nesneleri, seri hale getirilebilir bir sınıfın ortak ve özel alanlarıdır. Varsayılan olarak, sınıflar ile SerializableAttributeişaretlenmedikleri sürece seri hale getirilemez. Serileştirme işlemi sırasında bir sınıfın tüm genel ve özel alanları varsayılan olarak serileştirilir. ile NonSerializedAttribute işaretlenen alanlar serileştirme sırasında dışlanır. Bir nesneyi serileştirmek için sınıfını XmlSerializer kullanıyorsanız, aynı işlevselliği elde etmek için sınıfını kullanın XmlIgnoreAttribute . Alternatif olarak, serileştirme işlemini açıkça denetlemek için arabirimini uygulayın ISerializable . Uygulayan ISerializable sınıfların yine de ile SerializableAttributeişaretlenmesi gerektiğini unutmayın.

sınıfını NonSerializedAttribute bir olaya uygulamak için öznitelik konumunu aşağıdaki C# kodunda gösterildiği gibi alanı olarak ayarlayın.

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

Bir alan seri hale getirilmemişse ancak seri durumdan çıkarıldıktan sonra sağlanması gereken bir varsayılan değer gerektiriyorsa, alanı bir değerle sağlayan bir yöntem oluşturabilir ve ardından yöntemini uygulayabilirsiniz OnDeserializedAttribute .

Öznitelikleri kullanma hakkında daha fazla bilgi için bkz . Öznitelikler.

Oluşturucular

NonSerializedAttribute()

NonSerializedAttribute sınıfının yeni bir örneğini başlatır.

Özellikler

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

Ayrıca bkz.