DynamicMethod.IsSecurityTransparent Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
true
pokud 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í.