Sdílet prostřednictvím


DynamicMethod.IsSecuritySafeCritical Vlastnost

Definice

Získá hodnotu, která označuje, zda aktuální dynamická metoda je zabezpečení-kritické na aktuální úrovni důvěryhodnosti; to znamená, jestli může provádět kritické operace a může být přístupný transparentním kódem.

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

Hodnota vlastnosti

true pokud je dynamická metoda na aktuální úrovni důvěryhodnosti kritická z hlediska zabezpečení; false pokud je to důležité z hlediska zabezpečení nebo je transparentní.

Výjimky

Dynamická metoda nemá tělo metody.

Poznámky

Vlastnosti IsSecurityCritical, IsSecuritySafeCriticala IsSecurityTransparent hlásí úroveň průhlednosti dynamické metody určenou modulem CLR (Common Language Runtime). Kombinace těchto vlastností jsou uvedeny v následující tabulce:

Úroveň zabezpečení IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Kritické true false false
Bezpečně kritická true true false
Průhlednost false false true

Použití těchto vlastností je mnohem jednodušší než zkoumání poznámek zabezpečení sestavení a jeho typů, kontrola aktuální úrovně důvěryhodnosti a pokus o duplikování pravidel modulu runtime.

Průhlednost dynamické metody závisí na modulu, ke kterým je přidružena. Pokud je dynamická metoda přidružena k typu, nikoli k modulu, závisí její průhlednost na modulu, který typ obsahuje. Dynamické metody nemají poznámky zabezpečení, takže mají přiřazenou výchozí průhlednost pro přidružený modul.

  • Anonymně hostované dynamické metody jsou vždy transparentní, protože modul poskytovaný systémem, který je obsahuje, je transparentní.

  • Průhlednost dynamické metody, která je přidružena k důvěryhodnému sestavení (tj. sestavení se silným názvem, které je nainstalováno v globální mezipaměti sestavení), je popsána v následující tabulce.

    Poznámky ke sestavení Průhlednost úrovně 1 Průhlednost úrovně 2
    Plně transparentní Průhlednost Průhlednost
    Plně kritické Kritická Kritická
    Smíšená průhlednost Průhlednost Průhlednost
    Nezávislá na zabezpečení Bezpečné-kritické Kritické

    Pokud například přidružíte dynamickou metodu k typu, který je v mscorlib.dll, který má úroveň 2 smíšené průhlednosti, dynamická metoda je transparentní a nemůže spustit kritický kód. Informace o úrovních transparentnosti najdete v tématech Kód s transparentním zabezpečením, Úroveň 1 a Kód transparentního zabezpečení, Úroveň 2.

    Poznámka

    Přidružení dynamické metody k modulu v sestavení důvěryhodné úrovně 1, které je nezávislé na zabezpečení, například System.dll, neumožňuje zvýšení důvěryhodnosti. Pokud sada udělení kódu, který volá dynamickou metodu neobsahuje sadu udělení System.dll (tj. úplná důvěryhodnost), SecurityException je vyvolána při volání dynamické metody.

  • Průhlednost dynamické metody, která je přidružena k částečně důvěryhodnému sestavení, závisí na způsobu načtení sestavení. Pokud je sestavení načteno s částečnou důvěryhodností (například do domény aplikace v sandboxu), modul runtime ignoruje poznámky zabezpečení sestavení. Sestavení a všechny jeho typy a členy, včetně dynamických metod, jsou považovány za transparentní. Modul runtime věnuje pozornost poznámkám zabezpečení pouze v případě, že je sestavení s částečným vztahem důvěryhodnosti načteno s plnou důvěryhodností (například do výchozí domény aplikace desktopové aplikace). V takovém případě modul runtime přiřadí dynamické metodě výchozí průhlednost pro metody podle poznámek sestavení.

Další informace o generování a průhlednosti reflexe najdete v tématu Problémy se zabezpečením při generování reflexe. Informace o transparentnosti najdete v tématu Změny zabezpečení.

Platí pro

Viz také