TypeBuilder.IsSecuritySafeCritical 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í typ je zabezpečení-bezpečné-kritické; to znamená, zda 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 aktuální typ kritický z hlediska bezpečnosti; false
pokud je to důležité z hlediska zabezpečení nebo transparentní.
Výjimky
Aktuální dynamický typ nebyl vytvořen voláním metody .CreateType()
Poznámky
Vlastnosti IsSecurityCritical, IsSecuritySafeCriticala IsSecurityTransparent hlásí úroveň transparentnosti typu 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é a 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.
Modul runtime začne vyhodnocovat úrovně průhlednosti v sestavení. Pokud je dynamické sestavení důležité pro zabezpečení, jsou poznámky k typům ignorovány a všechny typy jsou kritické pro zabezpečení.
Ve výchozím nastavení dynamické sestavení dědí průhlednost sestavení, které ho generuje. Toto výchozí nastavení můžete přepsat pomocí AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)přetížení metody , AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)nebo AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) a zadáním atributů zabezpečení. Tímto způsobem nelze zvýšit úrovně zabezpečení. to znamená, že transparentní kód nemůže vygenerovat kód kritický pro zabezpečení nebo kód kritický z hlediska zabezpečení. Atributy musí být zadány při vytvoření dynamického sestavení, jinak se neprojeví, dokud není sestavení uloženo na disk a znovu načteno.
Poznámka
Výchozí dědičnost je omezená na vyhodnocení transparentnosti modulem runtime. Na dynamické sestavení nejsou použity žádné atributy. Pokud chcete přidat atributy zabezpečení, musíte je použít sami.
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í.