Bagikan melalui


MethodBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Metode

Definisi

Menambahkan keamanan deklaratif ke metode ini.

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)

Parameter

action
SecurityAction

Tindakan keamanan yang akan diambil (Permintaan, Pernyataan, dan sebagainya).

pset
PermissionSet

Kumpulan izin yang berlaku untuk tindakan.

Pengecualian

tidak action valid (RequestMinimum, RequestOptional, dan RequestRefuse tidak valid).

Jenis yang berisi telah dibuat menggunakan CreateType().

-atau-

Kumpulan pset izin berisi tindakan yang ditambahkan sebelumnya oleh AddDeclarativeSecurity(SecurityAction, PermissionSet).

-atau-

Untuk metode saat ini, IsGenericMethod properti adalah true, tetapi IsGenericMethodDefinition propertinya adalah false.

psetadalah null.

Contoh

Sampel kode di bawah ini menggambarkan penggunaan AddDeclarativeSecurity kontekstual untuk mengharuskan pemanggil metode memiliki izin yang tidak dibatasi.

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

Keterangan

AddDeclarativeSecurity dapat dipanggil beberapa kali, dengan setiap panggilan yang menentukan tindakan keamanan (seperti Demand, , Assertdan Deny) dan sekumpulan izin yang diterapkan tindakan.

Catatan

Dalam versi .NET Framework 1.0, 1.1, dan 2.0, atribut keamanan deklaratif diterapkan ke metode dengan menggunakan AddDeclarativeSecurity metode disimpan dalam format metadata XML lama. Lihat Memancarkan Atribut Keamanan Deklaratif.

Berlaku untuk