MethodBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Método

Definición

Agrega seguridad declarativa a este método.

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)

Parámetros

action
SecurityAction

Acción de seguridad que se va a realizar (Demand, Assert, etc.).

pset
PermissionSet

El conjunto de permisos al que se aplica la acción.

Excepciones

El action no es válido (RequestMinimum, RequestOptional y RequestRefuse no son válidos).

Tipo contenedor que se ha creado mediante CreateType().

o bien

El conjunto de permisos pset contiene una acción que AddDeclarativeSecurity(SecurityAction, PermissionSet) agregó anteriormente.

o bien

Para el método actual, la propiedad IsGenericMethod es true, pero la propiedad IsGenericMethodDefinition es false.

pset es null.

Ejemplos

En el ejemplo de código siguiente se muestra el uso contextual de AddDeclarativeSecurity para requerir que el autor de la llamada de un método tenga permisos sin restricciones.

// myModBuilder is an instance of ModuleBuilder.
// Note that for the use of PermissionSet and SecurityAction,
// the namespaces System::Security and System::Security::Permissions
// should be included.

TypeBuilder^ myTypeBuilder = myModBuilder->DefineType( "MyType",
                             TypeAttributes::Public );

array<Type^>^ temp0 = {int::typeid, int::typeid};
MethodBuilder^ myMethod1 = myTypeBuilder->DefineMethod( "MyMethod",
                           MethodAttributes::Public,
                           int::typeid, temp0 );

PermissionSet^ myMethodPermissions = gcnew PermissionSet(
                                     PermissionState::Unrestricted );

myMethod1->AddDeclarativeSecurity( SecurityAction::Demand,
                                   myMethodPermissions );
// myModBuilder is an instance of ModuleBuilder.

TypeBuilder myTypeBuilder = myModBuilder.DefineType("MyType",
                    TypeAttributes.Public);

MethodBuilder myMethod1 = myTypeBuilder.DefineMethod("MyMethod",
                    MethodAttributes.Public,
                    typeof(int),
                    new Type[]
                    {typeof(int), typeof(int)});	

PermissionSet myMethodPermissions = new PermissionSet(
            PermissionState.Unrestricted);

myMethod1.AddDeclarativeSecurity(SecurityAction.Demand,
                 myMethodPermissions);
' myModBuilder is an instance of ModuleBuilder.
' Note that for the use of PermissionSet and SecurityAction,
' the namespaces System.Security and System.Security.Permissions
' should be included.
Dim myTypeBuilder As TypeBuilder = myModBuilder.DefineType("MyType", _
                        TypeAttributes.Public)

Dim myMethod1 As MethodBuilder = myTypeBuilder.DefineMethod("MyMethod", _
                       MethodAttributes.Public, _
                       GetType(Integer), _
                       New Type() {GetType(Integer), GetType(Integer)})

Dim myMethodPermissions As New PermissionSet(PermissionState.Unrestricted)

myMethod1.AddDeclarativeSecurity(SecurityAction.Demand, myMethodPermissions)

Comentarios

AddDeclarativeSecurity se puede llamar varias veces, con cada llamada que especifica una acción de seguridad (como Demand, Asserty Deny) y un conjunto de permisos a los que se aplica la acción.

Nota

En las versiones 1.0, 1.1 y 2.0 de .NET Framework, los atributos de seguridad declarativos aplicados a un método mediante el AddDeclarativeSecurity método se almacenan en el formato de metadatos XML antiguo. Consulte Emisión de atributos de seguridad declarativos.

Se aplica a