ISerializable.GetObjectData メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ISerializable.GetObjectData メソッドの意味・解説 

ISerializable.GetObjectData メソッド

SerializationInfo に、オブジェクトシリアル化するために必要なデータ設定します

名前空間: System.Runtime.Serialization
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
Dim instance As ISerializable
Dim info As SerializationInfo
Dim context As StreamingContext

instance.GetObjectData(info, context)
void GetObjectData (
    SerializationInfo info,
    StreamingContext context
)
void GetObjectData (
    SerializationInfo^ info, 
    StreamingContext context
)
void GetObjectData (
    SerializationInfo info, 
    StreamingContext context
)
function GetObjectData (
    info : SerializationInfo, 
    context : StreamingContext
)

パラメータ

info

データ読み込む先の SerializationInfo。

context

このシリアル化シリアル化先 (StreamingContext を参照)。

例外例外
例外種類条件

SecurityException

呼び出し元に必要なアクセス許可がありません。

解説解説

SerializationInfo含まれるオブジェクトは、フォーマッタによって自動的に追跡およびシリアル化されます

GetObjectData呼び出すコードでは、シリアル化サービス提供するために SecurityPermission が必要です。SecurityPermissionFlag.SerializationFormatter (関連する列挙体)

メモメモ

シリアル化時、このメソッド呼び出される回数は、各オブジェクト インスタンスにつき 1 回だけであるとは限りません。したがって呼び出し回数に関係なく同じ動作保たれるようにメソッド実装する必要があります

使用例使用例

GetObjectData メソッド使用してシリアル化されたオブジェクト代替値を設定する例を次に示します。このコードでは、オブジェクトシリアル化時にSerializationInfo クラスの AddValue メソッド使用して代替値を格納します逆に、逆シリアル化実行時Person クラスコンストラクタ呼び出されときには代替値は GetValue メソッド使用して取得されオブジェクトフィールドに再割り当てされます

Imports System
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Runtime.Serialization
Imports System.Security.Permissions
Imports System.IO

<Assembly: SecurityPermission _
(SecurityAction.RequestMinimum, Execution:=True)> 

Class Program

    Public Shared Sub Main()
        Try
            Run()
        Catch exc As Exception
            Console.WriteLine("{0}: {1}", exc.Message,
 exc.StackTrace)
        Finally
            Console.WriteLine("Press Enter to exit....")
            Console.ReadLine()
        End Try

    End Sub

    Shared Sub Run()
        Dim binaryFmt As New
 BinaryFormatter()
        Dim p As New Person()
        p.IdNumber = 1010
        p.Name = "AAAAA"
        Dim fs As New FileStream("Person.xml",
 FileMode.OpenOrCreate)
        binaryFmt.Serialize(fs, p)
        fs.Close()
        Console.WriteLine _
        ("Original Name: {0}, Original ID: {1}", p.Name,
 p.IdNumber)

        ' Deserialize.
        fs = New FileStream("Person.xml",
 FileMode.OpenOrCreate)
        Dim p2 As Person = CType(binaryFmt.Deserialize(fs),
 Person)
        Console.WriteLine("New Name: {0}, New ID: {1}",
 _
        p2.Name, p2.IdNumber)
        fs.Close()
    End Sub
End Class

<Serializable()> _
Public Class Person
    Implements ISerializable
    Private name_value As String
    Private ID_value As Integer

    Public Sub New()

    End Sub

    Protected Sub New(ByVal
 info As SerializationInfo, _
    ByVal context As StreamingContext)
        If info Is Nothing
 Then
            Throw New System.ArgumentNullException("info")
        End If
        name_value = CStr(info.GetValue("AltName",
 GetType(String)))
        ID_value = Fix(info.GetValue("AltID", GetType(Integer)))

    End Sub

    <SecurityPermission(SecurityAction.LinkDemand, _
    Flags:=SecurityPermissionFlag.SerializationFormatter)> _
    Public Overridable Sub
 GetObjectData _
    (ByVal info As SerializationInfo, _
    ByVal context As StreamingContext) _
    Implements ISerializable.GetObjectData
        If info Is Nothing
 Then
            Throw New System.ArgumentNullException("info")
        End If
        info.AddValue("AltName", "XXX")
        info.AddValue("AltID", 9999)

    End Sub

    Public Property Name() As
 String
        Get
            Return name_value
        End Get
        Set(ByVal value As
 String)
            name_value = value
        End Set
    End Property

    Public Property IdNumber() As
 Integer
        Get
            Return ID_value
        End Get
        Set(ByVal value As
 Integer)
            ID_value = value
        End Set
    End Property
End Class
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.Security.Permissions;
using System.IO;

[assembly: SecurityPermission(
SecurityAction.RequestMinimum, Execution = true)]
namespace ISerializableExample
{
    class Program
    {
        public static void
 Main()
        {
            try
            {
                Run();
            }
            catch (Exception exc)
            {
                Console.WriteLine("{0}: {1}", exc.Message, exc.StackTrace);
            }
            finally
            {
                Console.WriteLine("Press Enter to exit....");
                Console.ReadLine();
            }
        }

        static void Run()
        {            
            BinaryFormatter binaryFmt = new BinaryFormatter();
            Person p = new Person();
            p.IdNumber = 1010;
            p.Name = "AAAAA";
            FileStream fs = new FileStream
                ("Person.xml", FileMode.OpenOrCreate);
            binaryFmt.Serialize(fs, p);
            fs.Close();
            Console.WriteLine
                ("Original Name: {0}, Original ID: {1}", p.Name, p.IdNumber);

            // Deserialize.
            fs = new FileStream
                ("Person.xml", FileMode.OpenOrCreate);
            Person p2 = (Person)binaryFmt.Deserialize(fs);
                Console.WriteLine("New Name: {0}, New ID: {1}", p2.Name,
 p2.IdNumber);
            fs.Close();
            }
        }
    [Serializable]
    public class Person : ISerializable
    {
        private string name_value;
        private int ID_value;

        public Person() { }
        protected Person(SerializationInfo info, StreamingContext
 context)
        {
            if (info == null)
                throw new System.ArgumentNullException("info");
            name_value = (string)info.GetValue("AltName",
 typeof(string));
            ID_value = (int)info.GetValue("AltID", typeof(int));
        }

        [SecurityPermission(SecurityAction.LinkDemand,
            Flags = SecurityPermissionFlag.SerializationFormatter)]
        public virtual void GetObjectData(
        SerializationInfo info, StreamingContext context)
        {
            if (info == null)
                throw new System.ArgumentNullException("info");
            info.AddValue("AltName", "XXX");
            info.AddValue("AltID", 9999);
        }

        public string Name
        {
            get { return name_value; }
            set { name_value = value; }
        }

        public int IdNumber
        {
            get { return ID_value; }
            set { ID_value = value; }
        }
    }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ISerializable インターフェイス
ISerializable メンバ
System.Runtime.Serialization 名前空間
StreamingContext
SerializationInfo
その他の技術情報
シリアル化カスタマイズ


このページでは「.NET Framework クラス ライブラリ リファレンス」からISerializable.GetObjectData メソッドを検索した結果を表示しています。
Weblioに収録されているすべての辞書からISerializable.GetObjectData メソッドを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からISerializable.GetObjectData メソッド を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ISerializable.GetObjectData メソッド」の関連用語











ISerializable.GetObjectData メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ISerializable.GetObjectData メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS