MethodBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Метод

Определение

Добавляет декларативную безопасность в этот метод.

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)

Параметры

action
SecurityAction

Выполняемое действие для безопасности (Demand, Assert и т. д.).

pset
PermissionSet

Набор разрешений, к которому применяется действие.

Исключения

action является недопустимым (RequestMinimum, RequestOptional и RequestRefuse являются недопустимыми).

Содержащий тип был создан с помощью CreateType().

-или-

Набор разрешений pset содержит действие, добавленное ранее с помощью AddDeclarativeSecurity(SecurityAction, PermissionSet).

-или-

Для текущего метода свойство IsGenericMethod имеет значение true, но свойство IsGenericMethodDefinition имеет значение false.

pset имеет значение null.

Примеры

В приведенном ниже примере кода показано контекстное использование AddDeclarativeSecurity , чтобы требовать у вызывающего метода неограниченные разрешения.

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

Комментарии

AddDeclarativeSecurity может вызываться несколько раз, при этом каждый вызов указывает действие безопасности (например Demand, , Assertи Deny) и набор разрешений, к которым применяется действие.

Примечание

В платформа .NET Framework версиях 1.0, 1.1 и 2.0 декларативные атрибуты безопасности, примененные к методу с помощью AddDeclarativeSecurity метода , хранятся в старом формате метаданных XML. См. раздел Создание декларативных атрибутов безопасности.

Применяется к