TypeBuilder.IsSecurityCritical Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient une valeur qui indique si le type actuel est critique pour la sécurité ou la sécurité et peut donc effectuer des opérations critiques.
public:
virtual property bool IsSecurityCritical { bool get(); };
public override bool IsSecurityCritical { get; }
member this.IsSecurityCritical : bool
Public Overrides ReadOnly Property IsSecurityCritical As Boolean
Valeur de propriété
true si le type actuel est critique pour la sécurité ou la sécurité-safe-critical ; false s’il est transparent.
Exceptions
Le type dynamique actuel n’a pas été créé en appelant la CreateType() méthode.
Remarques
Les IsSecurityCriticalpropriétés et IsSecurityTransparent les propriétés IsSecuritySafeCriticalsignalent 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é | EstCritiquePourLaSécurité | IsSecuritySafeCritical | IsSecurityTransparent |
|---|---|---|---|
| Essentiel | true |
false |
false |
| Critique sécurisé | true |
true |
false |
| 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 de ses types, de vérifier le niveau d’approbation 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 de 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 à l’aide de la surcharge , AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)ou AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) de la AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)méthode 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 sécurisé. Les attributs doivent être spécifiés lorsque l’assembly dynamique est créé, ou ils ne prennent pas effet tant que l’assembly n’a pas été enregistré sur le disque et rechargé.
Note
L’héritage par défaut est limité à l’évaluation du runtime de la transparence. 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é.