Partager via


TypeBuilder.IsSecurityTransparent Propriété

Définition

Obtient une valeur qui indique si le type actuel est transparent et s’il ne peut donc pas effectuer d’opérations critiques.

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

Valeur de propriété

true si le type est transparent de sécurité ; sinon, false.

Exceptions

Le type dynamique actuel n’a pas été créé en appelant la méthode CreateType().

Remarques

Les IsSecurityCriticalpropriétés , IsSecuritySafeCriticalet IsSecurityTransparent indiquent le niveau de transparence du type, tel que déterminé par le Common Language Runtime (CLR). Les combinaisons de ces propriétés sont présentées dans le tableau suivant :

Niveau de sécurité EstCritiqueDeSécurité EstCritiqueSécurisé EstTransparentDeSécurité
Critique true false false
Critique sécurisé true true false
Mode transparent false false true

L'utilisation de ces propriétés est beaucoup plus simple que d'examiner les annotations de sécurité d'un assembly et ses types, de vérifier le niveau de confiance actuel et de tenter de dupliquer les règles du runtime.

Le runtime commence à évaluer les niveaux de transparence au niveau de l’assembly. Par exemple, si l’assembly dynamique est critique pour la sécurité, les annotations sur les types sont ignorées et tous les types sont critiques pour la sécurité.

Par défaut, un assembly dynamique hérite de la transparence de l’assembly qui l’émet. Vous pouvez remplacer cette valeur par défaut en utilisant la AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)surcharge de méthode , AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)ou AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) et en spécifiant des attributs de sécurité. Vous ne pouvez pas élever les niveaux de sécurité en procédant ainsi . autrement dit, le code transparent ne peut pas émettre de code critique de sécurité ou de sécurité critique. Les attributs doivent être spécifiés lors de la création de l’assembly dynamique, ou ils ne prennent pas effet tant que l’assembly n’a pas été enregistré sur le disque et rechargé.

Notes

L’héritage par défaut est limité à l’évaluation de la transparence par le runtime. Aucun attribut n’est appliqué à l’assembly dynamique. Si vous souhaitez ajouter des attributs de sécurité, vous devez les appliquer vous-même.

Pour plus d’informations sur l’émission de réflexion et la transparence, consultez Problèmes de sécurité dans l’émission de réflexion. Pour plus d’informations sur la transparence, consultez Modifications de sécurité.

S’applique à

Voir aussi