MethodBuilder::AddDeclarativeSecurity Method (SecurityAction, PermissionSet^)
Adds declarative security to this method.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- action
-
Type:
System.Security.Permissions::SecurityAction
The security action to be taken (Demand, Assert, and so on).
- pset
-
Type:
System.Security::PermissionSet^
The set of permissions the action applies to.
| Exception | Condition |
|---|---|
| ArgumentOutOfRangeException | The action is invalid (RequestMinimum, RequestOptional, and RequestRefuse are invalid). |
| InvalidOperationException | The containing type has been created using CreateType. -or- The permission set pset contains an action that was added earlier by AddDeclarativeSecurity. -or- For the current method, the IsGenericMethod property is true, but the IsGenericMethodDefinition property is false. |
| ArgumentNullException | pset is null. |
AddDeclarativeSecurity can be called several times, with each call specifying a security action (such as Demand, Assert, and Deny) and a set of permissions that the action applies to.
Note |
|---|
In the .NET Framework versions 1.0, 1.1, and 2.0, the declarative security attributes applied to a method by using the AddDeclarativeSecurity method are stored in the old XML metadata format. See Emitting Declarative Security Attributes. |
The code sample below illustrates the contextual use of AddDeclarativeSecurity to require the caller of a method to have unrestricted permissions.
// 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 );
Available since 1.1
