次の方法で共有


SerializationInfo.GetValue メソッド

SerializationInfo から値を取得します。

Public Function GetValue( _
   ByVal name As String, _   ByVal type As Type _) As Object
[C#]
public object GetValue(stringname,Typetype);
[C++]
public: Object* GetValue(String* name,Type* type);
[JScript]
public function GetValue(
   name : String,type : Type) : Object;

パラメータ

  • name
    取得する値の名前。
  • type
    取得する値の型。格納された値がこの型に変換できない場合は、 InvalidCastException がスローされます。

戻り値

name に関連付けられた、指定した Type のオブジェクト。

例外

例外の種類 条件
ArgumentNullException name または type が null 参照 (Visual Basic では Nothing) です。
InvalidCastException name に関連付けられた値を type に変換できません。
SerializationException 指定した名前の要素が、現在のインスタンス内に見つかりません。

解説

SerializationInfo に格納されたデータが、要求した型のデータ、またはその派生クラスの 1 つのデータの場合は、その値が直接返されます。それ以外の場合は、 IFormatterConverter.Convert が呼び出されて、適切な型に変換します。

メモ    GetValue メソッドによって返された値は、type パラメータで指定した型に常に安全にキャストできます。

使用例

[Visual Basic, C#, C++] GetValue メソッドの使用方法を示すコード例を次に示します。

 
' A serializable LinkedList example.  For the full LinkedList implementation
' see the Serialization sample in the .NET Framework SDK.
<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

[C#] 
// A serializable LinkedList example.  For the full LinkedList implementation
// see the Serialization sample in the .NET Framework SDK.
[Serializable()]
class LinkedList: ISerializable {

   public static void Main() {}

   Node m_head = null;
   Node m_tail = null;
   
   // Serializes the object.
   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
   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());
   }
}

[C++] 
// A serializable LinkedList example.  For the full LinkedList implementation
// see the Serialization sample in the .NET Framework SDK.
[Serializable]
__gc class LinkedList: public ISerializable {

   Node* m_head;
   Node* m_tail;
   
   // Serializes the object.
public:
   void GetObjectData(SerializationInfo* info, StreamingContext /*context*/){
      // Stores the m_head and m_tail references in the SerializationInfo info.
      info->AddValue(S"head", m_head, m_head->GetType());
      info->AddValue(S"tail", m_tail, m_tail->GetType());
   }
   
   // Constructor that is called automatically during deserialization.
   // Reconstructs the object from the information in SerializationInfo info
private:
   LinkedList(SerializationInfo* info, StreamingContext /*context*/){      
      Node* temp = new Node(0);
      // Retrieves the values of Type temp.GetType() from SerializationInfo info
      m_head = dynamic_cast<Node*>(info->GetValue(S"head", temp->GetType()));
      m_tail = dynamic_cast<Node*>(info->GetValue(S"tail", temp->GetType()));
   }
};

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

SerializationInfo クラス | SerializationInfo メンバ | System.Runtime.Serialization 名前空間