<Type Name="TypedReference" FullName="System.TypedReference">
  <TypeSignature Maintainer="auto" Language="C#" Value="public struct TypedReference" />
  <AssemblyInfo>
    <AssemblyName>mscorlib</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00]</AssemblyPublicKey>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the &lt;link location="node:gtk-sharp/programming/threads"&gt;Gtk# Thread Programming&lt;/link&gt; for details.</ThreadSafetyStatement>
  <Base>
    <BaseTypeName>System.ValueType</BaseTypeName>
  </Base>
  <Interfaces />
  <Attributes>
    <Attribute>
      <AttributeName>System.CLSCompliant(false)</AttributeName>
    </Attribute>
  </Attributes>
  <Docs>
    <summary>
      <para>Describes an object that contains both a managed pointer to a location and a runtime representation of the type that can be stored at that location.</para>
    </summary>
    <remarks>
      <para>A <see cref="T:System.TypedReference" /> is a type/value combination used to support variable argument lists (as used by C++, for example), among other things. <see cref="T:System.TypedReference" /> is a built-in value type that can be used for parameters and local variables.</para>
      <para>Arrays of <see cref="T:System.TypedReference" /> cannot be created.</para>
      <para>A <see cref="T:System.TypedReference" /> cannot be boxed as it contains ByRefs, so it cannot reside on the heap.</para>
    </remarks>
  </Docs>
  <Members>
    <Member MemberName="Equals">
      <MemberSignature Language="C#" Value="public override bool Equals (object o);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="o" Type="System.Object" />
      </Parameters>
      <Docs>
        <param name="o">To be added.</param>
        <summary>
          <para>Determines whether the current instance and the specified
      <see cref="T:System.Object" /> represent the same type and value.</para>
        </summary>
        <returns>
          <para>
            <see langword="true" /> if <paramref name="obj" /> represents the same
   type and value as the current instance; otherwise,  <see langword="false" />.</para>
        </returns>
        <remarks>
          <para>
            <block subset="none" type="note">This method
      overrides <see cref="M:System.Object.Equals(System.Object)" />.</block>
          </para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="GetHashCode">
      <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para>Generates a hash code for the current instance.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" /> containing the hash code for the current instance.</para>
        </returns>
        <remarks>
          <para> The algorithm used to
      generate the hash code is unspecified. </para>
          <para>
            <block subset="none" type="note">This method
      overrides <see cref="M:System.Object.GetHashCode" />.</block>
          </para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="GetTargetType">
      <MemberSignature Language="C#" Value="public static Type GetTargetType (TypedReference value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Type</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="value" Type="System.TypedReference" />
      </Parameters>
      <Docs>
        <param name="value">The value whose target's type is to be returned.</param>
        <summary>
          <para>Returns the type of the target of the specified <see cref="T:System.TypedReference" />.</para>
        </summary>
        <returns>
          <para>The <see cref="T:System.Type" /> of the target of the specified <see cref="T:System.TypedReference" />.</para>
        </returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="MakeTypedReference">
      <MemberSignature Language="C#" Value="public static TypedReference MakeTypedReference (object target, System.Reflection.FieldInfo[] flds);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.TypedReference</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="target" Type="System.Object" />
        <Parameter Name="flds" Type="System.Reflection.FieldInfo[]" />
      </Parameters>
      <Docs>
        <param name="target">An object that contains the field described by the first element of <paramref name="flds" />.</param>
        <param name="flds">A list of field descriptions where each element describes a field that contains the field described by the succeeding element. Each described field must be a value type.</param>
        <summary>
          <para>Makes a <see cref="T:System.TypedReference" /> for a field identified by a specified object and list of field descriptions.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.TypedReference" /> for the field described by the last element of <paramref name="flds" />.</para>
        </returns>
        <remarks>
          <para>This method returns a <see cref="T:System.TypedReference" /> to the terminal field, where the target parameter contains the field described by the first element of <paramref name="flds" />, the field described by the first element of <paramref name="flds" /> contains the field described by the second element of <paramref name="flds" />, and so on, until the terminal field is reached.</para>
        </remarks>
        <exception cref="T:System.ArgumentException">
          <para>The 
<paramref name="flds" /> array has no elements. </para>
          <para>-or-</para>
          <para>An element of <paramref name="flds" /> is not a <see cref="T:System.Reflection.FieldInfo" />. </para>
        </exception>
        <exception cref="T:System.ArgumentNullException">
          <para>
            <paramref name="target" /> or <paramref name="flds" /> is <see langword="null" />. </para>
          <para>-or-</para>
          <para>An element of <paramref name="flds" /> is <see langword="null" />. </para>
        </exception>
        <exception cref="T:System.MissingMemberException">
          <para>Parameter <paramref name="target" /> does not contain the field described by the first element of <paramref name="flds" />, or an element of <paramref name="flds" /> describes a field that is not contained in the field described by the succeeding element of <paramref name="flds" />. </para>
          <para>-or-</para>
          <para>The field described by an element of <paramref name="flds" /> is not a value type.</para>
        </exception>
      </Docs>
    </Member>
    <Member MemberName="SetTypedReference">
      <MemberSignature Language="C#" Value="public static void SetTypedReference (TypedReference target, object value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="target" Type="System.TypedReference" />
        <Parameter Name="value" Type="System.Object" />
      </Parameters>
      <Docs>
        <param name="target">The target of the conversion.</param>
        <param name="value">The value to be converted.</param>
        <summary>
          <para>Converts the specified value to a <see cref="T:System.TypedReference" />.</para>
        </summary>
        <remarks>
          <para>This method converts <paramref name="value" /> to <paramref name="target" />.</para>
        </remarks>
        <exception cref="T:System.ArgumentNullException">
          <para>
            <paramref name="value" /> is <see langword="null" />. </para>
        </exception>
        <exception cref="T:System.InvalidCastException">
          <para>The requested conversion is not possible.</para>
        </exception>
      </Docs>
    </Member>
    <Member MemberName="TargetTypeToken">
      <MemberSignature Language="C#" Value="public static RuntimeTypeHandle TargetTypeToken (TypedReference value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.RuntimeTypeHandle</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="value" Type="System.TypedReference" />
      </Parameters>
      <Docs>
        <param name="value">The <see cref="T:System.TypedReference" /> for which the type handle is requested.</param>
        <summary>
          <para>Returns the internal metadata type handle for the specified <see cref="T:System.TypedReference" />.</para>
        </summary>
        <returns>
          <para>The internal metadata type handle for the specified <see cref="T:System.TypedReference" />.</para>
        </returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="ToObject">
      <MemberSignature Language="C#" Value="public static object ToObject (TypedReference value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="value" Type="System.TypedReference" />
      </Parameters>
      <Docs>
        <param name="value">The <see cref="T:System.TypedReference" /> to be converted.</param>
        <summary>
          <para>Converts the specified <see cref="T:System.TypedReference" /> to a System.Object.</para>
        </summary>
        <returns>
          <para>The <see cref="T:System.Object" /> that results from the conversion of the specified <see cref="T:System.TypedReference" />.</para>
        </returns>
        <remarks>
          <para>
            <block subset="none" type="note">This might involve a boxing operation.</block>
          </para>
        </remarks>
      </Docs>
    </Member>
  </Members>
</Type>
