Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Sicurezza dichiarativa utilizzata per l'ambito classe e membro

La sicurezza dichiarativa può essere eseguita su classi, membri e classi annidate. In questa sezione sono descritte le regole utilizzate per valutare la sicurezza dichiarativa quando è applicata a più livelli della stessa classe.

Nota importante Importante

In .NET Framework 4 il supporto di runtime è stato rimosso per l'applicazione delle richieste di autorizzazione Deny, RequestMinimum, RequestOptional e RequestRefuse. Queste richieste non devono essere utilizzate nel codice basato su .NET Framework 4 o versioni successive. Per ulteriori informazioni su questa e altre modifiche, vedere Modifiche della sicurezza in .NET Framework.

Quando viene applicata la sicurezza dichiarativa per la stessa azione di sicurezza sia a livello di classe che a livello di metodo, si verifica quanto indicato nella seguente tabella.

Azione di sicurezza

Comportamento di .NET Framework 2.0

Comportamento di .NET Framework 4

Demand

Gli attributi a livello di metodo e quelli a livello di classe vengono uniti in un singolo set di autorizzazioni per entrambi i livelli.

Il comportamento rimane invariato.

LinkDemand

Gli attributi a livello di metodo e quelli a livello di classe vengono uniti.

Il comportamento rimane invariato.

InheritanceDemand

Gli attributi a livello di classe richiedono l'autorizzazione specificata per eseguire la derivazione dalla classe.

Gli attributi a livello di metodo richiedono l'autorizzazione specificata per eseguire l'override del metodo in una classe derivata.

Poiché le richieste di ereditarietà hanno significati diversi per classi e metodi, le dichiarazioni possono essere applicate in modo indipendente a livello di classe e metodo.

Il comportamento rimane invariato.

Assert

Gli attributi a livello di metodo e quelli a livello di classe vengono uniti in un singolo set di autorizzazioni per entrambi i livelli.

Il comportamento rimane invariato.

Deny

Gli attributi a livello di metodo e quelli a livello di classe vengono uniti in un singolo set di autorizzazioni per entrambi i livelli.

Obsoleto in .NET Framework 4.

PermitOnly

Gli attributi a livello di metodo e quelli a livello di classe vengono intersecati in un singolo set di autorizzazioni per entrambi i livelli.

Il comportamento rimane invariato.

Se le operazioni di sicurezza sono diverse, come nel caso di una richiesta a livello di classe con un'asserzione a livello di metodo, non si verifica alcuna interazione e sono valutate entrambe.

Quando si applica la sicurezza dichiarativa alle classi, questa non viene estesa a eventuali classi annidate o metodi di classi annidate. Quando la sicurezza dichiarativa è applicata a classi annidate o metodi di una classe annidata, non viene estesa nemmeno alle classi padre. La sicurezza dichiarativa va applicata alle classi annidate come se si trattasse di classi distinte.

Nell'esempio riportato di seguito è illustrata un'autorizzazione ipotetica richiesta a livello di una classe denominata Main. All'interno di questa classe è definita una classe annidata denominata Nested. In questo esempio, la richiesta non si applica alla classe annidata.

[SomePermissionAttribute(SecurityAction.Demand, Unrestricted = true)]
class Main
{
    // This nested class is not influenced by the demand.
    class Nested
    {
        // This method is not influenced by the demand.
        public void MyMethod()
        {   
        }
    }
}
Mostra: