Share via


DynamicMethod.IsSecurityTransparent Vlastnost

Definice

Získá hodnotu, která označuje, zda aktuální dynamická metoda je transparentní na aktuální úrovni důvěryhodnosti, a proto nelze provádět kritické operace.

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

Hodnota vlastnosti

truepokud je dynamická metoda na aktuální úrovni důvěryhodnosti transparentní z hlediska zabezpečení; v opačném případě . false

Výjimky

Dynamická metoda nemá tělo metody.

Poznámky

Vlastnosti IsSecurityCritical, IsSecuritySafeCriticala IsSecurityTransparent hlásí úroveň transparentnosti 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.

Transparentnost dynamické metody závisí na modulu, ke které je přidružená. Pokud je dynamická metoda přidružena k typu, nikoli k modulu, závisí její průhlednost na modulu, který obsahuje typ. 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í (GPA), je popsána v následující tabulce.

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

    Pokud například přidružíte dynamickou metodu k typu, který je v mscorlib.dll, který má smíšenou průhlednost úrovně 2, je dynamická metoda transparentní a nemůže spustit kritický kód. Informace o úrovních transparentnosti najdete v tématech Kód transparentní z hlediska zabezpečení, Úroveň 1 a Transparentní kód 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, nepovoluje zvýšení důvěryhodnosti. Pokud sada udělení kódu, který volá dynamickou metodu neobsahuje sadu udělení System.dll (tj. úplný vztah důvěryhodnosti), 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 tom, jak je sestavení načteno. Pokud je sestavení načteno s částečnou důvěryhodností (například do domény aplikace v izolovaném prostoru), 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í částečné důvěryhodnosti načteno s úplným vztahem důvěryhodnosti (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é