TypeBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Lägger till deklarativ säkerhet för den här typen.
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)
Parametrar
- action
- SecurityAction
Den säkerhetsåtgärd som ska vidtas, till exempel Begäran, Assert och så vidare.
- pset
- PermissionSet
Den uppsättning behörigheter som åtgärden gäller för.
Undantag
är action ogiltigt (RequestMinimum, RequestOptionaloch RequestRefuse är ogiltigt).
Den innehållande typen har skapats med .CreateType()
-eller-
Behörighetsuppsättningen pset innehåller en åtgärd som lades till tidigare av AddDeclarativeSecurity.
pset är null.
Exempel
I följande exempel visas hur metoden används AddDeclarativeSecurity för att lägga till ett säkerhetsbehov för SecurityPermission med flaggan till en dynamisk typ med SecurityPermissionFlag.ControlEvidence namnet MyDynamicClass, i en sammansättning med namnet EmittedExample.dll. Exemplet genererar inga konsolutdata. När du har kört den kan du använda Ildasm.exe (IL Disassembler) för att undersöka EmittedExample.dll. I MyDynamicClassöppnar du -instruktionen .class public auto ansi för att se deklarativ behörighet.
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
Kommentarer
AddDeclarativeSecurity kan anropas flera gånger med varje anrop som anger en säkerhetsåtgärd (till exempel Begäran, Bekräfta eller Neka) och en uppsättning behörigheter som gäller för åtgärden.
Note
I .NET Framework-versionerna 1.0, 1.1 och 2.0 lagras de deklarativa säkerhetsattribut som tillämpas på en typ med den här metoden i det gamla XML-metadataformatet.