MethodBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přidá deklarativní zabezpečení do této metody.
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)
Parametry
- action
- SecurityAction
Akce zabezpečení, která se má provést (Požadavek, Kontrolní příkaz atd.).
- pset
- PermissionSet
Sada oprávnění, na která se akce vztahuje.
Výjimky
Hodnota action
je neplatná (RequestMinimum
, RequestOptional
a RequestRefuse
jsou neplatná).
Obsahující typ byl vytvořen pomocí CreateType()příkazu .
-nebo-
Sada pset
oprávnění obsahuje akci, která byla přidána dříve nástrojem AddDeclarativeSecurity(SecurityAction, PermissionSet).
-nebo-
Pro aktuální metodu IsGenericMethod je true
vlastnost , ale IsGenericMethodDefinition vlastnost je false
.
pset
je null
.
Příklady
Následující ukázka kódu znázorňuje kontextové použití AddDeclarativeSecurity
metody k vyžadování, aby volající metody měl neomezená oprávnění.
// 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)
Poznámky
AddDeclarativeSecurity lze volat několikrát, přičemž každé volání určuje akci zabezpečení (například Demand
, Assert
a Deny
) a sadu oprávnění, na která se akce vztahuje.
Poznámka
V rozhraní .NET Framework verze 1.0, 1.1 a 2.0 deklarativní atributy zabezpečení použité na metodu AddDeclarativeSecurity pomocí metody jsou uloženy ve starém formátu metadat XML. Viz Generování deklarativních atributů zabezpečení.