TypeBuilder.IsSecurityCritical Proprietà

Definizione

Ottiene un valore che indica se il tipo 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à

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

Eccezioni

Il tipo dinamico corrente non è stato creato chiamando il metodo CreateType().

Commenti

Le IsSecurityCriticalproprietà , IsSecuritySafeCriticale IsSecurityTransparent segnalano il livello di trasparenza del tipo, 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
Critico per la sicurezza 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.

Il runtime inizia a valutare i livelli di trasparenza nell'assembly. Ad esempio, se l'assembly dinamico è critico per la sicurezza, le annotazioni sui tipi vengono ignorate e tutti i tipi sono critici per la sicurezza.

Per impostazione predefinita, un assembly dinamico eredita la trasparenza dell'assembly che lo genera. È possibile eseguire l'override di questa impostazione predefinita usando l'overload AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)del metodo , AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)o AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) e specificando gli attributi di sicurezza. Non è possibile elevare i livelli di sicurezza eseguendo questa operazione; ovvero, il codice trasparente non può generare codice critico per la sicurezza o la sicurezza-safe-critical. Gli attributi devono essere specificati quando viene creato l'assembly dinamico oppure non vengono applicati fino a quando l'assembly non è stato salvato su disco e ricaricato.

Nota

L'ereditarietà predefinita è limitata alla valutazione della trasparenza del runtime. Nessun attributo viene applicato all'assembly dinamico. Se si desidera aggiungere attributi di sicurezza, è necessario applicarli autonomamente.

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