TypeBuilder.IsSecurityTransparent Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene un valore che indica se il tipo corrente è trasparente 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 tipo è trasparente per la sicurezza; in caso contrario, false
.
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.