TypeBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přidá deklarativní zabezpečení tohoto typu.
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)
Parametry
- action
- SecurityAction
Akce zabezpečení, která se má provést, například Poptávka, Assert atd.
- pset
- PermissionSet
Sada oprávnění, na která se akce vztahuje.
Výjimky
Je action neplatný (RequestMinimumRequestOptionala RequestRefuse jsou neplatné).
Obsahující typ byl vytvořen pomocí CreateType().
nebo
Sada oprávnění pset obsahuje akci, která byla přidána dříve AddDeclarativeSecurity.
pset je null.
Příklady
Následující příklad ukazuje použití AddDeclarativeSecurity metody přidat požadavek zabezpečení s SecurityPermissionSecurityPermissionFlag.ControlEvidence příznakem do dynamického typu pojmenovaného MyDynamicClassv sestavení s názvem EmittedExample.dll. Příklad nevygeneruje žádný výstup konzoly; po spuštění můžete použít Ildasm.exe (IL Disassembler) k prozkoumání EmittedExample.dll. Otevřete MyDynamicClasspříkaz .class public auto ansi a zobrazte deklarativní oprávnění.
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
Poznámky
AddDeclarativeSecurity může být volána několikrát při každém volání určující akci zabezpečení (například Poptávka, Assert nebo Odepřít) a sadu oprávnění, která se vztahují na akci.
Note
V rozhraní .NET Framework verze 1.0, 1.1 a 2.0 jsou deklarativní atributy zabezpečení použité na typ pomocí této metody uloženy ve starém formátu metadat XML.