SerializationInfo.GetValue(String, Type) Methode

Definition

Ruft einen Wert aus dem SerializationInfo-Speicher ab.Retrieves a value from the SerializationInfo store.

public:
 System::Object ^ GetValue(System::String ^ name, Type ^ type);
public object GetValue (string name, Type type);
member this.GetValue : string * Type -> obj

Parameter

name
String

Der dem abzurufenden Wert zugeordnete Name.The name associated with the value to retrieve.

type
Type

Der Type des abzurufenden Werts.The Type of the value to retrieve. Wenn der gespeicherte Wert nicht in diesen Typ konvertiert werden kann, löst das System eine InvalidCastException aus.If the stored value cannot be converted to this type, the system will throw a InvalidCastException.

Gibt zurück

Das Objekt vom angegebenen Type, dem der name zugeordnet ist.The object of the specified Type associated with name.

Ausnahmen

name oder type ist null.name or type is null.

Der Wert, dem der name zugeordnet ist, kann nicht in den type konvertiert werden.The value associated with name cannot be converted to type.

In der aktuellen Instanz wurde kein Element mit dem angegebenen Namen gefunden.An element with the specified name is not found in the current instance.

Beispiele

Im folgenden Codebeispiel wird die Verwendung GetValue der-Methode veranschaulicht:The following code example demonstrates the use of the GetValue method:

// A serializable LinkedList example.  For the full LinkedList implementation
// see the Serialization sample.
[Serializable]
ref class LinkedList: public ISerializable
{
private:
   Node^ m_head;
   Node^ m_tail;

   // Serializes the object.
public:
   virtual void GetObjectData( SerializationInfo^ info, StreamingContext /*context*/ )
   {
      // Stores the m_head and m_tail references in the SerializationInfo info.
      info->AddValue( "head", m_head, m_head->GetType() );
      info->AddValue( "tail", m_tail, m_tail->GetType() );
   }

   // Constructor that is called automatically during deserialization.
private:
   // Reconstructs the object from the information in SerializationInfo info
   LinkedList( SerializationInfo^ info, StreamingContext /*context*/ )
   {
      Node^ temp = gcnew Node( 0 );
      // Retrieves the values of Type temp.GetType() from SerializationInfo info
      m_head = dynamic_cast<Node^>(info->GetValue( "head", temp->GetType() ));
      m_tail = dynamic_cast<Node^>(info->GetValue( "tail", temp->GetType() ));
   }
};
// A serializable LinkedList example.  For the full LinkedList implementation
// see the Serialization sample.
[Serializable()]
class LinkedList: ISerializable {

   public static void Main() {}

   Node m_head = null;
   Node m_tail = null;
   
   // Serializes the object.
   [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter=true)]
   public void GetObjectData(SerializationInfo info, StreamingContext context){
      // Stores the m_head and m_tail references in the SerializationInfo info.
      info.AddValue("head", m_head, m_head.GetType());
      info.AddValue("tail", m_tail, m_tail.GetType());
   }
   
   // Constructor that is called automatically during deserialization.
   // Reconstructs the object from the information in SerializationInfo info
   [SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter=true)]
   private LinkedList(SerializationInfo info, StreamingContext context)
   {      
      Node temp = new Node(0);
      // Retrieves the values of Type temp.GetType() from SerializationInfo info
      m_head = (Node)info.GetValue("head", temp.GetType());
      m_tail = (Node)info.GetValue("tail", temp.GetType());
   }
}
' A serializable LinkedList example.  For the full LinkedList implementation
' see the Serialization sample.
<Serializable()> Class LinkedList
    Implements ISerializable

    Public Shared Sub Main()
    End Sub

    Private m_head As Node = Nothing
    Private m_tail As Node = Nothing    
    
    ' Serializes the object.
    Public Sub GetObjectData(info As SerializationInfo, _
    context As StreamingContext) Implements ISerializable.GetObjectData
    
        ' Stores the m_head and m_tail references in the SerializationInfo info.
        info.AddValue("head", m_head, m_head.GetType())
        info.AddValue("tail", m_tail, m_tail.GetType())
    End Sub
    
    
    ' Constructor that is called automatically during deserialization.
    ' Reconstructs the object from the information in SerializationInfo info.
    Private Sub New(info As SerializationInfo, context As StreamingContext)
        Dim temp As New Node(0)
        ' Retrieves the values of Type temp.GetType() from SerializationInfo info.
        m_head = CType(info.GetValue("head", temp.GetType()), Node)
        m_tail = CType(info.GetValue("tail", temp.GetType()), Node)
    End Sub
End Class

Hinweise

Wenn die in SerializationInfo gespeicherten Daten vom angeforderten Typ (oder einer der abgeleiteten Klassen) sind, wird dieser Wert direkt zurückgegeben.If the data stored in the SerializationInfo is of the type requested (or one of its derived classes), that value is returned directly. IFormatterConverter.Convert Andernfalls wird aufgerufen, um Sie in den entsprechenden Typ zu konvertieren.Otherwise, IFormatterConverter.Convert is called to convert it to the appropriate type.

Der von der GetValue -Methode zurückgegebene Wert kann immer sicher in den Typ umgewandelt werden, type der im-Parameter angegeben ist.The value returned by the GetValue method can always be safely cast to the type specified in the type parameter.

Gilt für: