DynamicMethod.IsSecuritySafeCritical Propriété

Définition

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

S’applique à

Voir aussi