TypeBuilder.IsSecurityTransparent 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 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é.