Teilen über


DynamicMethod.IsSecuritySafeCritical Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob die aktuelle dynamische Methode auf der aktuellen Vertrauensebene sicherheitsgeschützt ist, d. h. ob sie wichtige Vorgänge ausführen darf und ob von transparentem Code auf sie zugegriffen werden kann.

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

Eigenschaftswert

true, wenn die dynamische Methode auf der aktuellen Vertrauensebene sicherheitsgeschützt ist, false wenn sie sicherheitskritisch oder sicherheitstransparent ist.

Ausnahmen

Die dynamische Methode weist keinen Methodentext auf.

Hinweise

Die IsSecurityCriticalEigenschaften , IsSecuritySafeCriticalund IsSecurityTransparent melden die Transparenzebene der dynamischen Methode, die von der Common Language Runtime (CLR) bestimmt wird. Die Kombinationen dieser Eigenschaften sind in der folgenden Tabelle dargestellt:

Sicherheitsstufe IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Kritisch true false false
Sicherheitskritisch true true false
Transparent false false true

Ein Verwenden dieser Eigenschaften ist deutlich einfacher als das Untersuchen der Sicherheitsanmerkungen einer Assembly und der zugehörigen Typen, das Überprüfen der aktuellen Vertrauensebene und das Versuchen, die Laufzeitregeln zu duplizieren.

Die Transparenz einer dynamischen Methode hängt vom Modul ab, dem sie zugeordnet ist. Wenn die dynamische Methode einem Typ und nicht einem Modul zugeordnet ist, hängt ihre Transparenz von dem Modul ab, das den Typ enthält. Dynamische Methoden verfügen nicht über Sicherheitsanmerkungen, sodass ihnen die Standardtransparenz für das zugeordnete Modul zugewiesen wird.

  • Anonym gehostete dynamische Methoden sind immer transparent, da das vom System bereitgestellte Modul, das sie enthält, transparent ist.

  • Die Transparenz einer dynamischen Methode, die einer vertrauenswürdigen Assembly zugeordnet ist (d. h. einer Assembly mit starkem Namen, die im globalen Assemblycache installiert ist) wird in der folgenden Tabelle beschrieben.

    Assemblyanmerkung Transparenz der Ebene 1 Transparenz der Ebene 2
    Vollständig transparent Transparent Transparent
    Vollständig kritisch Kritisch Kritisch
    Gemischte Transparenz Transparent Transparent
    Sicherheitsunabhängig Sicherheitskritisch Kritisch

    Wenn Sie z. B. eine dynamische Methode einem Typ in mscorlib.dll zuordnen, der gemischte Transparenz der Ebene 2 aufweist, ist die dynamische Methode transparent und kann keinen kritischen Code ausführen. Informationen zu Transparenzstufen finden Sie unter Sicherheitstransparenter Code, Ebene 1 und Sicherheitstransparenter Code, Ebene 2.

    Hinweis

    Das Zuordnen einer dynamischen Methode zu einem Modul in einer vertrauenswürdigen Assembly der Ebene 1, die sicherheitsunabhängig ist, z. B. System.dll, ermöglicht keine Erhöhung der Vertrauenswürdigkeit. Wenn der Grant-Satz des Codes, der die dynamische Methode aufruft, nicht den Grant-Satz von System.dll (d. h. vollständige Vertrauenswürdigkeit) SecurityException enthält, wird ausgelöst, wenn die dynamische Methode aufgerufen wird.

  • Die Transparenz einer dynamischen Methode, die einer teilweise vertrauenswürdigen Assembly zugeordnet ist, hängt davon ab, wie die Assembly geladen wird. Wenn die Assembly mit teilweiser Vertrauenswürdigkeit geladen wird (z. B. in eine Sandkastenanwendungsdomäne), ignoriert die Runtime die Sicherheitsanmerkungen der Assembly. Die Assembly und alle zugehörigen Typen und Member, einschließlich dynamischer Methoden, werden als transparent behandelt. Die Runtime achtet nur auf Sicherheitsanmerkungen, wenn die teilweise vertrauenswürdige Assembly mit voller Vertrauenswürdigkeit geladen wird (z. B. in die Standardanwendungsdomäne einer Desktopanwendung). In diesem Fall weist die Runtime der dynamischen Methode die Standardtransparenz für Methoden gemäß den Anmerkungen der Assembly zu.

Weitere Informationen zu Reflektions-Emitt und Transparenz finden Sie unter Sicherheitsprobleme in Reflection Emit. Informationen zur Transparenz finden Sie unter Sicherheitsänderungen.

Gilt für:

Weitere Informationen