TypeBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Fügt diesem Typ deklarative Sicherheit hinzu.
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)
Parameter
- action
- SecurityAction
Die auszuführende Sicherheitsaktion (z. B. Demand, Assert usw.).
- pset
- PermissionSet
Der Berechtigungssatz, für den die Aktion gilt.
Ausnahmen
Die action ist ungültig (RequestMinimum, RequestOptional, und RequestRefuse sind ungültig).
Der enthaltende Typ wurde mithilfe von CreateType() erstellt.
- oder -
Der Berechtigungssatz pset enthält eine Aktion, die zuvor von AddDeclarativeSecurity hinzugefügt wurde.
pset ist null.
Beispiele
Das folgende Beispiel veranschaulicht die Verwendung der AddDeclarativeSecurity -Methode zum Hinzufügen einer Sicherheitsanforderung für SecurityPermission mit dem SecurityPermissionFlag.ControlEvidence Flag zu einem dynamischen Typ namens MyDynamicClassin einer Assembly namens EmittedExample.dll. Das Beispiel erzeugt keine Konsolenausgabe. Nachdem Sie es ausgeführt haben, können Sie Ildasm.exe (IL Disassembler) verwenden, um EmittedExample.dll zu untersuchen.
MyDynamicClassÖffnen Sie in die .class public auto ansi -Anweisung, um die deklarative Berechtigung anzuzeigen.
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
Hinweise
AddDeclarativeSecurity kann mehrmals aufgerufen werden, wobei jeder Aufruf eine Sicherheitsaktion (z. B. Anforderung, Assert oder Verweigern) und einen Satz von Berechtigungen angibt, die für die Aktion gelten.
Hinweis
In den .NET Framework Versionen 1.0, 1.1 und 2.0 werden die deklarativen Sicherheitsattribute, die mit dieser Methode auf einen Typ angewendet werden, im alten XML-Metadatenformat gespeichert.