TypeBuilder.IsSecuritySafeCritical Propriété

Définition

Obtient une valeur qui indique si le type actuel est critique sécurisé, autrement dit s’il peut effectuer des opérations critiques et s’il est accessible par du code transparent.

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

Valeur de propriété

true si le type actuel est critique sécurisé ; false s’il est critique de sécurité ou transparent.

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 indiqué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 pour la sécurité ou pour la sécurité. Les attributs doivent être spécifiés lors de la création de l’assembly dynamique, ou ils ne prennent effet que lorsque l’assembly a é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 Reflection Emit. Pour plus d’informations sur la transparence, consultez Modifications de sécurité.

S’applique à

Voir aussi