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. См. раздел Создание декларативных атрибутов безопасности.