TypeBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.