Condividi tramite


DynamicMethod.IsSecuritySafeCritical Proprietà

Definizione

Ottiene un valore che indica se il metodo dinamico corrente è critico per la sicurezza al livello di attendibilità corrente, vale a dire se può eseguire operazioni critiche e se è possibile accedervi tramite codice trasparente.

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

Valore della proprietà

true se il metodo dinamico è critico per la sicurezza al livello di attendibilità corrente; false se è critico per la sicurezza o 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 da Common Language Runtime (CLR). Le combinazioni di queste proprietà sono visualizzate nella tabella seguente:

Livello di sicurezza IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Critico true false false
Sicurezza critica 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, viene descritto nella tabella seguente.

    Annotazione dell'assembly Trasparenza del livello 1 Trasparenza livello 2
    Completamente trasparente Modalità trasparente Modalità trasparente
    Completamente critico Critico Critico
    Trasparenza mista Modalità trasparente Modalità trasparente
    Sicurezza-agnostica 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 Codice trasparente per la sicurezza, il livello 1 e il codice trasparente per la sicurezza, il livello 2.

    Nota

    L'associazione di un metodo dinamico a un modulo in un assembly di livello 1 attendibile, ad esempio System.dll, non consente l'elevazione dell'attendibilità. Se il set di concessione del codice che chiama il metodo dinamico non include il set di concessione di System.dll , ovvero l'attendibilità completa, SecurityException viene generata 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 dell'applicazione 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 di trust parziale viene caricato con attendibilità completa, ad esempio nel dominio dell'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