TypeBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 형식에 선언적 보안을 추가합니다.
public:
void AddDeclarativeSecurity(System::Security::Permissions::SecurityAction action, System::Security::PermissionSet ^ pset);
public void AddDeclarativeSecurity(System.Security.Permissions.SecurityAction action, System.Security.PermissionSet pset);
member this.AddDeclarativeSecurity : System.Security.Permissions.SecurityAction * System.Security.PermissionSet -> unit
Public Sub AddDeclarativeSecurity (action As SecurityAction, pset As PermissionSet)
매개 변수
- action
- SecurityAction
요청, 어설션 등과 같이 수행할 보안 작업입니다.
- pset
- PermissionSet
작업이 적용되는 사용 권한 집합입니다.
예외
유효 action 하지 않습니다(RequestMinimumRequestOptionalRequestRefuse잘못된 경우).
pset은 null입니다.
예제
다음 예제에서는 EmittedExample.dll라는 어셈블리에서 명명 된 MyDynamicClass동적 형식에 플래그에 SecurityPermissionFlag.ControlEvidence 대 SecurityPermission 한 보안 요구를 추가 하는 메서드를 사용 AddDeclarativeSecurity 하는 방법을 보여 줍니다. 이 예제에서는 콘솔 출력을 생성하지 않습니다. 실행한 후에 는Ildasm.exe(IL 디스어셈블러)를 사용하여 EmittedExample.dll검사할 수 있습니다. 에서 MyDynamicClass선언적 사용 권한을 보려면 문을 엽니다 .class public auto ansi .
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Security;
using System.Security.Permissions;
namespace CustomAttribute_Sample
{
public class MyApplication
{
static void Main()
{
// Create a simple name for the assembly, and create the assembly and module.
AssemblyName myAssemblyName = new AssemblyName("EmittedAssembly");
AssemblyBuilder myAssemblyBuilder =
AppDomain.CurrentDomain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.RunAndSave);
ModuleBuilder myModuleBuilder =
myAssemblyBuilder.DefineDynamicModule("EmittedAssembly", "EmittedAssembly.dll");
// Define a public class named "MyDynamicClass" in the assembly.
TypeBuilder myTypeBuilder = myModuleBuilder.DefineType("MyDynamicClass",
TypeAttributes.Public);
// Create a permission set and add a security permission
// with the ControlEvidence flag.
//
PermissionSet myPermissionSet = new PermissionSet(PermissionState.None);
myPermissionSet.AddPermission(
new SecurityPermission(SecurityPermissionFlag.ControlEvidence));
// Add the permission set to the MyDynamicClass type,
// as a declarative security demand.
//
myTypeBuilder.AddDeclarativeSecurity(SecurityAction.Demand, myPermissionSet);
Type myType = myTypeBuilder.CreateType();
myAssemblyBuilder.Save("EmittedAssembly.dll");
}
}
}
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Security
Imports System.Security.Permissions
Namespace CustomAttribute_Sample
Class MyApplication
Shared Sub Main()
' Create a simple name for the assembly; create the assembly and the module.
Dim myAssemblyName As New AssemblyName("EmittedAssembly")
Dim myAssemblyBuilder As AssemblyBuilder = _
AppDomain.CurrentDomain.DefineDynamicAssembly( _
myAssemblyName, AssemblyBuilderAccess.RunAndSave)
Dim myModuleBuilder As ModuleBuilder = _
myAssemblyBuilder.DefineDynamicModule("EmittedAssembly", "EmittedAssembly.dll")
' Define a public class named "MyDynamicClass" in the assembly.
Dim myTypeBuilder As TypeBuilder = _
myModuleBuilder.DefineType("MyDynamicClass", TypeAttributes.Public)
' Create a permission set and add a security permission
' with the ControlEvidence flag.
'
Dim myPermissionSet As New PermissionSet(PermissionState.None)
Dim ce As New SecurityPermission(SecurityPermissionFlag.ControlEvidence)
myPermissionSet.AddPermission(ce)
' Add the permission set to the MyDynamicClass type,
' as a declarative security demand.
'
myTypeBuilder.AddDeclarativeSecurity(SecurityAction.Demand, myPermissionSet)
Dim myType As Type = myTypeBuilder.CreateType()
myAssemblyBuilder.Save("EmittedAssembly.dll")
End Sub
End Class
End Namespace
설명
AddDeclarativeSecurity 는 보안 작업(예: 요청, 어설션 또는 거부)과 작업에 적용되는 권한 집합을 지정하는 각 호출을 통해 여러 번 호출될 수 있습니다.
메모
.NET Framework 버전 1.0, 1.1 및 2.0에서는 이 메서드를 사용하여 형식에 적용된 선언적 보안 특성이 이전 XML 메타데이터 형식으로 저장됩니다.