DynamicMethod.IsSecuritySafeCritical 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 la méthode dynamique actuelle est critique sécurisée au niveau de confiance actuel, autrement dit si elle peut exécuter des opérations critiques et être 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 la méthode dynamique est critique sécurisée au niveau de confiance actuel ; false
si elle est critique de sécurité ou transparente.
Exceptions
La méthode dynamique n’a pas de corps de méthode.
Remarques
Les IsSecurityCriticalpropriétés , IsSecuritySafeCriticalet IsSecurityTransparent signalent le niveau de transparence de la méthode dynamique, 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ée | 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.
La transparence d’une méthode dynamique dépend du module à lequel elle est associée. Si la méthode dynamique est associée à un type plutôt qu’à un module, sa transparence dépend du module qui contient le type. Les méthodes dynamiques n’ayant pas d’annotations de sécurité, la transparence par défaut du module associé leur est attribuée.
Les méthodes dynamiques hébergées anonymement sont toujours transparentes, car le module fourni par le système qui les contient est transparent.
La transparence d’une méthode dynamique associée à un assembly approuvé (c’est-à-dire un assembly au nom fort installé dans le global assembly cache) est décrite dans le tableau suivant.
Annotation d’assembly Transparence de niveau 1 Transparence de niveau 2 Entièrement transparent Mode transparent Mode transparent Entièrement critique Critique Critique Transparence mixte Mode transparent Mode transparent Indépendant de la sécurité Critique sécurisé Critique Par exemple, si vous associez une méthode dynamique à un type qui se trouve dans mscorlib.dll, qui a une transparence mixte de niveau 2, la méthode dynamique est transparente et ne peut pas exécuter de code critique. Pour plus d’informations sur les niveaux de transparence, consultez Code transparent de sécurité, niveau 1 et Code transparent de sécurité, niveau 2.
Notes
L’association d’une méthode dynamique à un module dans un assembly de niveau 1 approuvé qui n’est pas indépendant de la sécurité, comme System.dll, n’autorise pas l’élévation de confiance. Si le jeu d’octrois du code qui appelle la méthode dynamique n’inclut pas le jeu d’octroi de System.dll (c’est-à-dire la confiance totale), SecurityException est levée lorsque la méthode dynamique est appelée.
La transparence d’une méthode dynamique associée à un assembly partiellement approuvé dépend de la façon dont l’assembly est chargé. Si l’assembly est chargé avec une approbation partielle (par exemple, dans un domaine d’application bac à sable (sandbox), le runtime ignore les annotations de sécurité de l’assembly. L’assembly et tous ses types et membres, y compris les méthodes dynamiques, sont traités comme transparents. Le runtime accorde une attention particulière aux annotations de sécurité uniquement si l’assembly de confiance partielle est chargé avec une approbation totale (par exemple, dans le domaine d’application par défaut d’une application de bureau). Dans ce cas, le runtime affecte à la méthode dynamique la transparence par défaut pour les méthodes en fonction des annotations de l’assembly.
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é.