SerializationInfo.GetValue(String, Type) 方法

定義

SerializationInfo 存放區擷取值。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

參數

name
String

與要擷取的值相關聯的名稱。The name associated with the value to retrieve.

type
Type

要擷取之值的 TypeThe Type of the value to retrieve. 如果儲存的值無法轉換為這個型別,則系統將擲回 InvalidCastExceptionIf the stored value cannot be converted to this type, the system will throw a InvalidCastException.

傳回

指定的 Type 的物件與 name 相關聯。The object of the specified Type associated with name.

例外狀況

nametypenullname or type is null.

name 相關聯的數值無法轉換為 typeThe value associated with name cannot be converted to type.

在目前的執行個體中找不到具有指定名稱的項目。An element with the specified name is not found in the current instance.

範例

下列程式碼範例示範如何使用GetValue方法: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

備註

如果儲存在中SerializationInfo的資料是所要求的類型 (或它的其中一個衍生類別), 則會直接傳回該值。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會呼叫, 以將它轉換成適當的類型。Otherwise, IFormatterConverter.Convert is called to convert it to the appropriate type.

GetValue方法所傳回的值一律可以安全地轉換成type參數中指定的類型。The value returned by the GetValue method can always be safely cast to the type specified in the type parameter.

適用於