TypeBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) 메서드

정의

이 형식에 선언적 보안을 추가합니다.

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잘못된 경우).

포함하는 형식이 .를 사용하여 CreateType()만들어졌습니다.

-또는-

권한 집합 pset 에는 이전에 AddDeclarativeSecurity추가한 작업이 포함됩니다.

psetnull입니다.

예제

다음 예제에서는 EmittedExample.dll라는 어셈블리에서 명명 된 MyDynamicClass동적 형식에 플래그에 SecurityPermissionFlag.ControlEvidenceSecurityPermission 한 보안 요구를 추가 하는 메서드를 사용 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 메타데이터 형식으로 저장됩니다.

적용 대상