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 | TypeInformation 、 MemberAccess 、および 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