DynamicMethod.IsSecurityTransparent Proprietà

Definizione

Ottiene un valore che indica se il metodo dinamico corrente è trasparente al livello di attendibilità corrente e pertanto non può eseguire operazioni critiche.

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

Valore della proprietà

Boolean

true se il metodo dinamico è trasparente per la sicurezza a livello di attendibilità corrente; in caso contrario, false.

Eccezioni

Il metodo dinamico non dispone di un corpo del metodo.

Commenti

Le IsSecurityCriticalproprietà , IsSecuritySafeCriticale IsSecurityTransparent segnalano il livello di trasparenza del metodo dinamico determinato da Common Language Runtime (CLR). Le combinazioni di queste proprietà sono illustrate 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 a cui è associata. Se il metodo dinamico è associato a un tipo anziché a un modulo, la trasparenza dipende dal modulo che contiene il tipo. Ai metodi dinamici non sono associate 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 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