Share via


MethodBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Yöntem

Tanım

Bu yönteme bildirim temelli güvenlik ekler.

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)

Parametreler

action
SecurityAction

Gerçekleştirilecek güvenlik eylemi (Talep, Onay vb.).

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 AddDeclarativeSecurity(SecurityAction, PermissionSet)daha önce eklenmiş bir eylem içerir.

-veya-

Geçerli yöntem IsGenericMethod için özelliği şeklindedir true, ancak IsGenericMethodDefinition özelliği şeklindedir false.

pset, null değeridir.

Örnekler

Aşağıdaki kod örneği, bir yöntemi çağıranın kısıtlanmamış izinlere sahip olmasını gerektirmek için bağlamsal kullanımını AddDeclarativeSecurity gösterir.

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

Açıklamalar

AddDeclarativeSecuritybirkaç kez çağrılabilir ve her çağrı bir güvenlik eylemi (, ve gibiDemandAssert) ve Denyeylemin geçerli olduğu bir izin kümesi belirtir.

Not

.NET Framework 1.0, 1.1 ve 2.0 sürümlerinde, yöntemi kullanılarak AddDeclarativeSecurity bir yönteme uygulanan bildirim temelli güvenlik öznitelikleri eski XML meta veri biçiminde depolanır. Bkz. Bildirim temelli Güvenlik Özniteliklerini Yayma.

Şunlara uygulanır