NonSerializedAttribute クラス


シリアル化できるクラスのフィールドをシリアル化しないことを示します。Indicates that a field of a serializable class should not be serialized. このクラスは継承できません。This class cannot be inherited.

public ref class NonSerializedAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Field, Inherited=false)]
[System.AttributeUsage(System.AttributeTargets.Field, Inherited=true)]
public sealed class NonSerializedAttribute : Attribute
type NonSerializedAttribute = class
    inherit Attribute
Public NotInheritable Class NonSerializedAttribute
Inherits Attribute

次の例は、 SerializableAttribute属性でマークされたオブジェクトのシリアル化と、シリアル化されたオブジェクトのでマークNonSerializedAttributeされたフィールドの動作を示しています。The following example demonstrates serialization of an object marked with the SerializableAttribute attribute, and the behavior of a field marked with the NonSerializedAttribute in the serialized object.


このコードではSoapFormatter 、クラスを使用してオブジェクトをシリアル化します。The code uses the SoapFormatter class to serialize the object. クラスは、既定ではプロジェクトに読み込まれない、system.string....... .dll にあります。The class is found in the system.runtime.serialization.formatters.soap.dll, which is not loaded by default into a project. コードを実行するには、DLL への参照をプロジェクトに追加する必要があります。To run the code, you must add a reference to the DLL to your project.

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

ref class TestSimpleObject
   int member1;
   String^ member2;
   String^ member3;
   double member4;


   // A field that is not serialized.

   String^ member5;
      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: " );

   // 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 );

   // 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 ));
   Console::WriteLine( "" );
   Console::WriteLine( "After deserialization the object contains: " );

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: ");

      // 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);

      // 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);

      Console.WriteLine("After deserialization the object contains: ");

// A test object that needs to be serialized.
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);
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: ")
      ' 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)
      ' 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)
      Console.WriteLine("After deserialization the object contains: ")

   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


クラスBinaryFormatterまたはSoapFormatterクラスを使用してオブジェクトをシリアル化NonSerializedAttributeする場合は、属性を使用して、フィールドがシリアル化されないようにします。When using the BinaryFormatter or SoapFormatter classes to serialize an object, use the NonSerializedAttribute attribute to prevent a field from being serialized. たとえば、この属性を使用して、機密データをシリアル化できないようにすることができます。For example, you can use this attribute to prevent the serialization of sensitive data.

NonSerializedAttribute属性のターゲットオブジェクトは、serializable クラスのパブリックフィールドとプライベートフィールドです。The target objects for the NonSerializedAttribute attribute are public and private fields of a serializable class. 既定では、でSerializableAttributeマークされている場合を除き、クラスはシリアル化できません。By default, classes are not serializable unless they are marked with SerializableAttribute. シリアル化プロセスでは、クラスのすべてのパブリックフィールドとプライベートフィールドが既定でシリアル化されます。During the serialization process all the public and private fields of a class are serialized by default. でマークさNonSerializedAttributeれたフィールドは、シリアル化時に除外されます。Fields marked with NonSerializedAttribute are excluded during serialization. XmlSerializerクラスを使用してオブジェクトをシリアル化する場合は、 XmlIgnoreAttributeクラスを使用して同じ機能を取得します。If you are using the XmlSerializer class to serialize an object, use the XmlIgnoreAttribute class to get the same functionality. または、 ISerializableインターフェイスを実装して、シリアル化プロセスを明示的に制御します。Alternatively, implement the ISerializable interface to explicitly control the serialization process. を実装ISerializableするクラスは、でSerializableAttributeもマークされている必要があることに注意してください。Note that classes that implement ISerializable must still be marked with SerializableAttribute.

NonSerializedAttributeクラスをイベントに適用するには、次C#のコードに示すように、[属性の場所] を [フィールド] に設定します。To apply the NonSerializedAttribute class to an event, set the attribute location to field, as shown in the following C# code.

public event ChangedEventHandler Changed;  

フィールドはシリアル化されず、逆シリアル化後に指定する必要がある既定値が必要な場合は、フィールドに値を提供するメソッドを作成し、 OnDeserializedAttributeをメソッドに適用できます。If a field is not serialized, but it still requires a default value that must be supplied after deserialization, you can create a method that supplies the field with a value, then apply the OnDeserializedAttribute to the method.

属性の使用方法の詳細については、「属性」を参照してください。For more information about using attributes, see Attributes.



NonSerializedAttribute クラスの新しいインスタンスを初期化します。Initializes a new instance of the NonSerializedAttribute class.



派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(継承元 Attribute)



このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。Returns a value that indicates whether this instance is equal to a specified object.

(継承元 Attribute)

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

(継承元 Attribute)

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(継承元 Attribute)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(継承元 Attribute)

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)


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

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(継承元 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(継承元 Attribute)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(継承元 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(継承元 Attribute)