MethodBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Metoda

Definicja

Dodaje zabezpieczenia deklaratywne do tej metody.

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

Akcja zabezpieczeń, która ma zostać podjęta (żądanie, potwierdzenie itd.).

pset
PermissionSet

Zestaw uprawnień, do których ma zastosowanie akcja.

Wyjątki

Element action jest nieprawidłowy (RequestMinimum, RequestOptional, i RequestRefuse są nieprawidłowe).

Typ zawierający został utworzony przy użyciu polecenia CreateType().

-lub-

Zestaw pset uprawnień zawiera akcję, która została dodana wcześniej przez AddDeclarativeSecurity(SecurityAction, PermissionSet)program .

-lub-

Dla bieżącej metody IsGenericMethod właściwość to true, ale IsGenericMethodDefinition właściwość to false.

pset to null.

Przykłady

Poniższy przykład kodu ilustruje kontekstowe użycie AddDeclarativeSecurity metody , aby wymagać od obiektu wywołującego metody, aby mieć nieograniczone uprawnienia.

// 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)

Uwagi

AddDeclarativeSecurity Może być wywoływany kilka razy, przy każdym wywołaniu określającym akcję zabezpieczeń (taką jak Demand, Asserti Deny) i zestaw uprawnień, do których ma zastosowanie akcja.

Uwaga

W .NET Framework w wersjach 1.0, 1.1 i 2.0 atrybuty zabezpieczeń deklaratywne stosowane do metody przy użyciu AddDeclarativeSecurity metody są przechowywane w starym formacie metadanych XML. Zobacz Emitowanie atrybutów zabezpieczeń deklaratywnych.

Dotyczy