MethodBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Methode

Definition

Fügt dieser Methode deklarative Sicherheit hinzu.

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

Die auszuführende Sicherheitsaktion (Demand, Assert usw.).

pset
PermissionSet

Der Berechtigungssatz, für den die Aktion gilt.

Ausnahmen

Die action ist ungültig (RequestMinimum, RequestOptional, und RequestRefuse sind ungültig).

Der enthaltende Typ wurde mithilfe von CreateType() erstellt.

- oder -

Der Berechtigungssatz pset enthält eine Aktion, die zuvor von AddDeclarativeSecurity(SecurityAction, PermissionSet) hinzugefügt wurde.

- oder -

Für die aktuelle Methode ist die IsGenericMethod-Eigenschaft true, aber die IsGenericMethodDefinition-Eigenschaft ist false.

pset ist null.

Beispiele

Im folgenden Codebeispiel wird die kontextbezogene Verwendung von AddDeclarativeSecurity veranschaulicht, damit der Aufrufer einer Methode über uneingeschränkte Berechtigungen verfügt.

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

Hinweise

AddDeclarativeSecurity kann mehrmals aufgerufen werden, wobei jeder Aufruf eine Sicherheitsaktion (z Demand. B. , Assertund Deny) und einen Satz von Berechtigungen angibt, auf die die Aktion angewendet wird.

Hinweis

In den .NET Framework Versionen 1.0, 1.1 und 2.0 werden die deklarativen Sicherheitsattribute, die mithilfe der AddDeclarativeSecurity -Methode auf eine Methode angewendet werden, im alten XML-Metadatenformat gespeichert. Weitere Informationen finden Sie unter Ausgeben deklarativer Sicherheitsattribute.

Gilt für: