DynamicMethod.IsSecurityCritical Proprietà

Definizione

Ottiene un valore che indica se il metodo dinamico corrente è critico per la sicurezza o critico per la sicurezza e richiamabile da codice trasparente e può pertanto eseguire operazioni critiche.

public:
 virtual property bool IsSecurityCritical { bool get(); };
public override bool IsSecurityCritical { get; }
member this.IsSecurityCritical : bool
Public Overrides ReadOnly Property IsSecurityCritical As Boolean

Valore della proprietà

Boolean

true se il metodo dinamico corrente è critico per la sicurezza o critico per la sicurezza e richiamabile da codice trasparente; false se è trasparente.

Eccezioni

Il metodo dinamico non dispone di un corpo del metodo.

Commenti

Le IsSecurityCriticalproprietà , IsSecuritySafeCriticale IsSecurityTransparent segnalano il livello di trasparenza del metodo dinamico, come determinato dal common language runtime (CLR). Le combinazioni di queste proprietà sono visualizzate nella tabella seguente:

Livello di sicurezza IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Critico true false false
Cassaforte critico true true false
Modalità trasparente false false true

Usare queste proprietà è molto più semplice che non esaminare le annotazioni di sicurezza di un assembly e dei suoi tipi, controllare il livello di attendibilità corrente e tentare di duplicare le regole del runtime.

La trasparenza di un metodo dinamico dipende dal modulo associato. Se il metodo dinamico è associato a un tipo anziché a un modulo, la relativa trasparenza dipende dal modulo che contiene il tipo. I metodi dinamici non dispongono di annotazioni di sicurezza, pertanto vengono assegnate la trasparenza predefinita per il modulo associato.

  • I metodi dinamici ospitati in modo anonimo sono sempre trasparenti perché il modulo fornito dal sistema che li contiene è trasparente.

  • La trasparenza di un metodo dinamico associato a un assembly attendibile, ovvero un assembly con nome sicuro installato nella Global Assembly Cache, è descritto nella tabella seguente.

    Annotazione assembly Trasparenza di livello 1 Trasparenza di livello 2
    Completamente trasparente Modalità trasparente Modalità trasparente
    Completamente critico Critico Critico
    Trasparenza mista Modalità trasparente Modalità trasparente
    Sicurezza indipendente Critico per la sicurezza Critico

    Ad esempio, se si associa un metodo dinamico a un tipo in mscorlib.dll, con trasparenza mista di livello 2, il metodo dinamico è trasparente e non può eseguire codice critico. Per informazioni sui livelli di trasparenza, vedere Security-Transparent Code, Level 1 e Security-Transparent Code, Livello 2.

    Nota

    L'associazione di un metodo dinamico a un modulo in un assembly di livello 1 attendibile indipendente dalla sicurezza, ad esempio System.dll, non consente l'elevazione dell'attendibilità. Se il set di concessioni del codice che chiama il metodo dinamico non include il set di concessioni di System.dll (ovvero l'attendibilità completa), SecurityException viene generato quando viene chiamato il metodo dinamico.

  • La trasparenza di un metodo dinamico associato a un assembly parzialmente attendibile dipende dalla modalità di caricamento dell'assembly. Se l'assembly viene caricato con attendibilità parziale, ad esempio in un dominio applicazione in modalità sandbox, il runtime ignora le annotazioni di sicurezza dell'assembly. L'assembly e tutti i relativi tipi e membri, inclusi i metodi dinamici, vengono considerati trasparenti. Il runtime presta attenzione alle annotazioni di sicurezza solo se l'assembly parzialmente attendibile viene caricato con attendibilità totale, ad esempio nel dominio applicazione predefinito di un'applicazione desktop. In tal caso, il runtime assegna al metodo dinamico la trasparenza predefinita per i metodi in base alle annotazioni dell'assembly.

Per altre informazioni sull'emissione e la trasparenza della reflection, vedere Problemi di sicurezza in Reflection Emit. Per informazioni sulla trasparenza, vedere Modifiche alla sicurezza.

Si applica a

Vedi anche