Export (0) Print
Expand All

FormatterServices.GetObjectData Method

Extracts the data from the specified object and returns it as an array of objects.

Namespace:  System.Runtime.Serialization
Assembly:  mscorlib (in mscorlib.dll)

'Declaration
Public Shared Function GetObjectData ( _
	obj As Object, _
	members As MemberInfo() _
) As Object()

Parameters

obj
Type: System.Object

The object to write to the formatter.

members
Type: System.Reflection.MemberInfo()

The members to extract from the object.

Return Value

Type: System.Object()
An array of Object that contains data stored in members and associated with obj.

ExceptionCondition
ArgumentNullException

The obj or members parameter is Nothing.

An element of members is Nothing.

SerializationException

An element of members does not represent a field.

For each supplied member of the members array the GetObjectData method extracts the value associated with the obj object, and returns it. The length of the returned array is the same as the length of the members array.

The following example creates an instance of a Book class and sets field values on the instance. The code then gets the type information using the GetSerializableMembers method. The code copies the instance data into an object array using the GetObjectData method. A new uninitialized instance of the class is created using the GetSafeUninitializedObject method. Finally, the data from the first instance is copied into the second instance using the PopulateObjectMembers method.

Imports System
Imports System.Collections
Imports System.Runtime.Serialization
Imports System.IO
Imports System.Reflection
Imports System.Security.Permissions

<Assembly: SecurityPermission(SecurityAction.RequestMinimum)> 

' The SerializableAttribute specifies that instances of the class  
' can be serialized by the BinaryFormatter or SoapFormatter.
<Serializable()> _
Class Book
    Public Title As String 
    Public Author As String 

    ' Constructor for setting new values. 
    Public Sub New(ByVal newTitle As String, _
    ByVal newAuthor As String)
        Title = newTitle
        Author = newAuthor

    End Sub 
End Class

<SecurityPermission(SecurityAction.Demand)> _
               Public NotInheritable Class Test

    Public Shared Sub Main()
        Try
            Run()
        Catch exc As System.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()
        ' Create an instance of a Book class  
        ' with a title and author. 
        Dim Book1 As New Book("Book Title 1", "Masato Kawai")

        ' Store data about the serializable members in a  
        ' MemberInfo array. The MemberInfo type holds  
        ' only type data, not instance data. 
        Dim members As MemberInfo() = _
           FormatterServices.GetSerializableMembers(GetType(Book))

        ' Copy the data from the first book into an  
        ' array of objects. 
        Dim data As Object() = _
            FormatterServices.GetObjectData(Book1, members)

        ' Create an uninitialized instance of the Book class. 
        Dim Book1Copy As Book = _
        CType(FormatterServices.GetSafeUninitializedObject _
           (GetType(Book)), Book)

        ' Call the PopuluateObjectMembers to copy the 
        ' data into the new Book instance.
        FormatterServices.PopulateObjectMembers _
        (Book1Copy, members, data)

        ' Print the data from the copy.
        Console.WriteLine("Title: {0}", Book1Copy.Title)
        Console.WriteLine("Author: {0}", Book1Copy.Author)

    End Sub 

    ' A private constructor is good practice on 
    ' a class containing only static methods. 
    Private Sub New()

    End Sub 
End Class

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft