TypeBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Yöntem

Tanım

Bu türe bildirim temelli güvenlik ekler.

C#
public void AddDeclarativeSecurity(System.Security.Permissions.SecurityAction action, System.Security.PermissionSet pset);

Parametreler

action
SecurityAction

Talep, Onay vb. gibi gerçekleştirilecek güvenlik eylemi.

pset
PermissionSet

Eylemin uygulandığı izin kümesi.

Özel durumlar

action geçersiz (RequestMinimum, RequestOptionalve RequestRefuse geçersiz).

İçeren tür kullanılarak CreateType()oluşturulmuştur.

-veya-

İzin kümesi pset , tarafından AddDeclarativeSecuritydaha önce eklenmiş bir eylem içerir.

pset, null değeridir.

Örnekler

Aşağıdaki örnekte, adlı dinamik türe MyDynamicClassbayrağıyla bir SecurityPermissionFlag.ControlEvidence güvenlik talebi eklemek için SecurityPermission yönteminin AddDeclarativeSecurity kullanımı EmittedExample.dll adlı bir derlemede gösterilmiştir. Örnek konsol çıkışı üretmez; çalıştırdıktan sonra EmittedExample.dll incelemek için Ildasm.exe (IL Disassembler) kullanabilirsiniz. bildirim MyDynamicClassiznini .class public auto ansi görmek için içinde deyimini açın.

C#
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");
      }
   }
}

Açıklamalar

AddDeclarativeSecurity her çağrı bir güvenlik eylemi (Talep, Onay veya Reddet gibi) ve eylem için geçerli olan bir dizi izin belirterek birkaç kez çağrılabilir.

Not

.NET Framework 1.0, 1.1 ve 2.0 sürümlerinde, bu yöntem kullanılarak bir türe uygulanan bildirim temelli güvenlik öznitelikleri eski XML meta veri biçiminde depolanır.

Şunlara uygulanır

Ürün Sürümler
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1