次の方法で共有


ReflectionPermissionFlag 列挙体

表示されていないメンバに対する System.Reflection の使用を許可することを指定します。

この列挙体には、メンバ値をビットごとに演算するための FlagsAttribute 属性が含まれています。

<Flags>
<Serializable>
Public Enum ReflectionPermissionFlag
[C#]
[Flags]
[Serializable]
public enum ReflectionPermissionFlag
[C++]
[Flags]
[Serializable]
__value public enum ReflectionPermissionFlag
[JScript]
public
   Flags
 Serializable
enum ReflectionPermissionFlag

解説

この列挙体は、 ReflectionPermission で使用されます。 ReflectionPermission を与えないと、リフレクションは表示されているメンバに対してだけ使用できます。

注意    ReflectionPermission を使用するとプライベートなクラス メンバやメタデータにアクセスできるため、インターネット コードには ReflectionPermission を使用しないようにしてください。

メンバ

メンバ名 説明
AllFlags TypeInformationMemberAccess 、および ReflectionEmit が設定されます。 7
MemberAccess すべての型のメンバに対して操作を呼び出すことができます。このフラグを設定しないと、表示されている型のメンバに対してだけ操作を呼び出すことができます。 2
NoFlags 表示されていない型に対して、リフレクションは使用できません。 0
ReflectionEmit System.Reflection.Emit が使用できます。 4
TypeInformation 表示されていない型のメンバに対してリフレクションを使用できます。 1

使用例

 
' This class generates ReflectionPermission objects using ReflectionPermissionFlag enumeration values.

Imports System
Imports System.Security
Imports System.Security.Permissions
Imports Microsoft.VisualBasic

Public Class ReflectionGenerator


    Private myReflection As ReflectionPermissionFlag() = _
        {ReflectionPermissionFlag.AllFlags, _
         ReflectionPermissionFlag.MemberAccess, _
         ReflectionPermissionFlag.NoFlags, _
         ReflectionPermissionFlag.ReflectionEmit, _
         ReflectionPermissionFlag.TypeInformation}

    Private reflectionIndex As Integer = 0


    Public Sub New()
        ResetIndex()
    End Sub 'New


    Public Sub ResetIndex()
        reflectionIndex = 0
    End Sub 'ResetIndex

    ' CreateReflection creates a ReflectionPermission object.
    Public Function CreateReflection(ByRef reflectionPerm As ReflectionPermission, ByRef reflection As ReflectionPermissionFlag) As Boolean

        If reflectionIndex >= myReflection.Length Then
            reflectionPerm = New ReflectionPermission(PermissionState.None)
            reflection = ReflectionPermissionFlag.NoFlags
            reflectionIndex &= 1
            Return False
        End If
        reflection = myReflection(reflectionIndex)
        reflectionIndex = reflectionIndex + 1
        Try
            reflectionPerm = New ReflectionPermission(reflection)
            Return True
        Catch e As Exception
            Console.WriteLine(("Cannot create ReflectionPermission: " & reflection & " " & e.ToString()))
            reflectionPerm = New ReflectionPermission(PermissionState.None)
            reflection = ReflectionPermissionFlag.NoFlags
            Return True
        End Try
    End Function 'CreateReflection
End Class 'ReflectionGenerator 
' End of ReflectionGenerator.

[C#] 
// This class generates ReflectionPermission objects using ReflectionPermissionFlag enumeration values.

using System;
using System.Security; 
using System.Security.Permissions; 


public  class ReflectionGenerator
{


    private ReflectionPermissionFlag[] myReflection = 
        {
            ReflectionPermissionFlag.AllFlags,
            ReflectionPermissionFlag.MemberAccess,
            ReflectionPermissionFlag.NoFlags,
            ReflectionPermissionFlag.ReflectionEmit,
            ReflectionPermissionFlag.TypeInformation
        };

    private int reflectionIndex = 0;

    public ReflectionGenerator()
    {
        ResetIndex();
    }

    public void ResetIndex()
    {
        reflectionIndex = 0;
    }
    // CreateReflection creates a ReflectionPermission object.
    public bool CreateReflection(out ReflectionPermission reflectionPerm, 
        out ReflectionPermissionFlag reflection)
    {

        if(reflectionIndex >= myReflection.Length) 
        {
            reflectionPerm = new ReflectionPermission(PermissionState.None);
            reflection=ReflectionPermissionFlag.NoFlags;
            reflectionIndex++;
            return false;
        }
        reflection = myReflection[reflectionIndex++];
        try
        {
            reflectionPerm = new ReflectionPermission(reflection);
            return true;
        } 
        catch(Exception e)
        {
            Console.WriteLine("Cannot create ReflectionPermission: " + reflection +" "+e);
            reflectionPerm = new ReflectionPermission(PermissionState.None);
            reflection=ReflectionPermissionFlag.NoFlags;
            return true;
        }
    }
} // End of ReflectionGenerator.

[C++] 
// This class generates ReflectionPermission objects using ReflectionPermissionFlag enumeration values.

#using <mscorlib.dll>

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Runtime::InteropServices;

public __gc class ReflectionGenerator {

private:
   ReflectionPermissionFlag  myReflection[];
   int  reflectionIndex;

public:
   ReflectionGenerator() {
      ReflectionPermissionFlag temp[] = {
         ReflectionPermissionFlag::AllFlags,
         ReflectionPermissionFlag::MemberAccess,
         ReflectionPermissionFlag::NoFlags,
         ReflectionPermissionFlag::ReflectionEmit,
         ReflectionPermissionFlag::TypeInformation
      };
      myReflection = temp;

      ResetIndex();
   }

   void ResetIndex() {
      reflectionIndex = 0;
   }
   // CreateReflection creates a ReflectionPermission Object*.
   bool CreateReflection([Out] ReflectionPermission** reflectionPerm,
      [Out] ReflectionPermissionFlag* reflection) {

         if (reflectionIndex >= myReflection->Length) {
            *reflectionPerm = new ReflectionPermission(PermissionState::None);
            *reflection=ReflectionPermissionFlag::NoFlags;
            reflectionIndex++;
            return false;
         }
         *reflection = myReflection[reflectionIndex++];
         try {
            *reflectionPerm = new ReflectionPermission(*reflection);
            return true;
         } catch (Exception* e) {
            Console::WriteLine(S"Cannot create ReflectionPermission: {0}{1}", __box(*reflection), e);
            *reflectionPerm = new ReflectionPermission(PermissionState::None);
            *reflection=ReflectionPermissionFlag::NoFlags;
            return true;
         }
      }
}; // End of ReflectionGenerator.

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

必要条件

名前空間: System.Security.Permissions

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

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

System.Security.Permissions 名前空間 | ReflectionPermission | ReflectionPermissionAttribute