<Type Name="ReflectionPermissionAttribute" FullName="System.Security.Permissions.ReflectionPermissionAttribute" FullNameSP="System_Security_Permissions_ReflectionPermissionAttribute" Maintainer="ecma">
  <TypeSignature Language="ILASM" Value=".class public sealed serializable ReflectionPermissionAttribute extends System.Security.Permissions.CodeAccessSecurityAttribute" />
  <TypeSignature Language="C#" Value="public sealed class ReflectionPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute" />
  <MemberOfLibrary>Reflection</MemberOfLibrary>
  <AssemblyInfo>
    <AssemblyName>mscorlib</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    <AssemblyVersion>4.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadingSafetyStatement>All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.</ThreadingSafetyStatement>
  <Base>
    <BaseTypeName>System.Security.Permissions.CodeAccessSecurityAttribute</BaseTypeName>
  </Base>
  <Interfaces />
  <Attributes>
    <Attribute>
      <AttributeName>System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Struct | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.All, AllowMultiple=true, Inherited=false)</AttributeName>
    </Attribute>
    <Attribute>
      <AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName>
    </Attribute>
  </Attributes>
  <Docs>
    <summary>
      <para> Used to declaratively specify security actions to
      control access to
      non-public types using reflection.</para>
    </summary>
    <remarks>
      <block subset="none" type="note">
        <para>The level of access to non-public types and members is specified using
         the <see cref="P:System.Security.Permissions.ReflectionPermissionAttribute.Flags" /> property and the <see cref="T:System.Security.Permissions.ReflectionPermissionFlag" /> enumeration.</para>
        <para>The security information declared by a security attribute is stored in the
         metadata of the attribute target, and is accessed by the system at run-time.
         Security attributes are used for declarative security only. For imperative
         security, use the corresponding permission class, <see cref="T:System.Security.Permissions.ReflectionPermission" />.</para>
        <para>The allowable <see cref="T:System.Security.Permissions.ReflectionPermissionAttribute" /> targets are
      determined by the <see cref="T:System.Security.Permissions.SecurityAction" /> passed to the
      constructor.</para>
      </block>
    </remarks>
    <example>
      <para>The following example shows a declarative request for access to non-public
      members of loaded assemblies. The <see cref="F:System.Security.Permissions.SecurityAction.RequestMinimum" />
      security action indicates that this is the minimum permission required for the
      target assembly to be able to execute.</para>
      <para>
        <c>[assembly:ReflectionPermissionAttribute(SecurityAction.RequestMinimum,
      MemberAccess=true)]
   </c>
      </para>
      <para>The following example shows how to demand that the calling code has
      unrestricted access to non-public types. Demands are typically made to protect
      methods or classes from malicious code. </para>
      <para>
        <c>[ReflectionPermissionAttribute(SecurityAction.Demand, Unrestricted=true)]
   </c>
      </para>
    </example>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="ILASM" Value="public rtspecialname specialname instance void .ctor(valuetype System.Security.Permissions.SecurityAction action)" />
      <MemberSignature Language="C#" Value="public ReflectionPermissionAttribute (System.Security.Permissions.SecurityAction action);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="action" Type="System.Security.Permissions.SecurityAction" />
      </Parameters>
      <Docs>
        <param name="action">A <see cref="T:System.Security.Permissions.SecurityAction" /> value.</param>
        <summary>
          <para>Constructs and initializes a new instance of the <see cref="T:System.Security.Permissions.ReflectionPermissionAttribute" /> class
   with the specified <see cref="T:System.Security.Permissions.SecurityAction" /> value.</para>
        </summary>
        <remarks>To be added.</remarks>
        <exception cref="T:System.ArgumentException">
          <paramref name="action" /> is not a valid <see cref="T:System.Security.Permissions.SecurityAction" /> value. </exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="CreatePermission">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual class System.Security.IPermission CreatePermission()" />
      <MemberSignature Language="C#" Value="public override System.Security.IPermission CreatePermission ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.IPermission</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para>Returns a new <see cref="T:System.Security.Permissions.ReflectionPermission" /> that contains the
   security information of the current instance.</para>
        </summary>
        <returns>
          <para>A new <see cref="T:System.Security.Permissions.ReflectionPermission" /> object with the 
   security information of the current
   instance.</para>
        </returns>
        <remarks>
          <block subset="none" type="note">
            <para>Applications typically do not call this method; it is 
         intended for use by the system.</para>
            <para>The security information described by a security 
         attribute is stored in the metadata of the attribute target, and is accessed by
         the system at run-time. The system uses the object returned by this method to
         convert the security information of the current instance into the form stored in
         metadata.</para>
            <para>This method overrides <see cref="M:System.Security.Permissions.SecurityAttribute.CreatePermission" />.</para>
          </block>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Flags">
      <MemberSignature Language="ILASM" Value=".property valuetype System.Security.Permissions.ReflectionPermissionFlag Flags { public hidebysig specialname instance valuetype System.Security.Permissions.ReflectionPermissionFlag get_Flags() public hidebysig specialname instance void set_Flags(valuetype System.Security.Permissions.ReflectionPermissionFlag value) }" />
      <MemberSignature Language="C#" Value="public System.Security.Permissions.ReflectionPermissionFlag Flags { set; get; }" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Security.Permissions.ReflectionPermissionFlag</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para> Gets or sets levels of access to non-public types using reflection.</para>
        </summary>
        <value>
          <para> One or more of the <see cref="T:System.Security.Permissions.ReflectionPermissionFlag" /> values. </para>
        </value>
        <remarks>
          <para>
            <block subset="none" type="note">To specify multiple
   <see cref="T:System.Security.Permissions.ReflectionPermissionFlag" /> values for a set operation,
      use the bitwise OR operator.</block>
          </para>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="MemberAccess">
      <MemberSignature Language="C#" Value="public bool MemberAccess { set; get; }" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="ReflectionEmit">
      <MemberSignature Language="C#" Value="public bool ReflectionEmit { set; get; }" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="RestrictedMemberAccess">
      <MemberSignature Language="C#" Value="public bool RestrictedMemberAccess { set; get; }" />
      <MemberType>Property</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="TypeInformation">
      <MemberSignature Language="C#" Value="public bool TypeInformation { set; get; }" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <Attributes>
        <Attribute>
          <AttributeName>System.Obsolete("not enforced in 2.0+")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
  </Members>
  <TypeExcluded>0</TypeExcluded>
</Type>
