Condividi tramite


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à

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
Critico sicuro 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 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