TypeBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Methode

Definitie

Voegt declaratieve beveiliging toe aan dit type.

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)

Parameters

action
SecurityAction

De beveiligingsactie die moet worden ondernomen, zoals Vraag, Assert, enzovoort.

pset
PermissionSet

De set machtigingen waarop de actie van toepassing is.

Uitzonderingen

De action naam is ongeldig (RequestOptionalRequestMinimumen RequestRefuse is ongeldig).

Het type bevat is gemaakt met behulp van CreateType().

– of –

De machtigingenset pset bevat een actie die eerder is toegevoegd door AddDeclarativeSecurity.

pset is null.

Voorbeelden

In het volgende voorbeeld ziet u hoe de methode wordt gebruikt om een beveiligingsvraag SecurityPermission met de SecurityPermissionFlag.ControlEvidence vlag toe te voegen aan een dynamisch type met de naam MyDynamicClass, in een assembly met de AddDeclarativeSecurity naam EmittedExample.dll. Het voorbeeld produceert geen console-uitvoer; nadat u het hebt uitgevoerd, kunt u Ildasm.exe (IL Disassembler) gebruiken om EmittedExample.dllte onderzoeken. Open MyDynamicClassde .class public auto ansi instructie in om de declaratieve machtiging te bekijken.

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

Opmerkingen

AddDeclarativeSecurity kan meerdere keren worden aangeroepen bij elke aanroep die een beveiligingsactie opgeeft (zoals Vraag, Assert of Weigeren) en een set machtigingen die van toepassing zijn op de actie.

Note

In .NET Framework versie 1.0, 1.1 en 2.0 worden de declaratieve beveiligingskenmerken die zijn toegepast op een type met deze methode opgeslagen in de oude XML-metagegevensindeling.

Van toepassing op