
Populates the specified object with values for each field drawn from the data array of objects.
Assembly: mscorlib (in mscorlib.dll)
'Declaration Public Shared Function PopulateObjectMembers ( _ obj As Object, _ members As MemberInfo(), _ data As Object() _ ) As Object
Parameters
- obj
- Type: System.Object
The object to populate.
- members
- Type: System.Reflection.MemberInfo()
An array of MemberInfo that describes which fields and properties to populate.
- data
- Type: System.Object()
An array of Object that specifies the values for each field and property to populate.
| Exception | Condition |
|---|---|
| ArgumentNullException | The obj, members, or data parameter is Nothing. An element of members is Nothing. |
| ArgumentException | The length of members does not match the length of data. |
| SerializationException | An element of members is not an instance of FieldInfo. |
| SecurityException | The caller does not have the required permission. |
If an element in data is Nothing, PopulateObjectMembers does not write anything to that field.
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
- SecurityPermission
For providing serialization services. Associated enumeration: SecurityPermissionFlag.SerializationFormatter, SecurityAction.LinkDemand.
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role not supported), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.