Udostępnij za pośrednictwem


TypeBuilder.IsSecuritySafeCritical Właściwość

Definicja

Pobiera wartość wskazującą, czy bieżący typ jest krytyczny dla bezpieczeństwa; oznacza to, czy może wykonywać operacje krytyczne i można uzyskiwać do niego dostęp za pomocą przezroczystego kodu.

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

Wartość właściwości

true jeśli bieżący typ jest krytyczny pod względem bezpieczeństwa; false jeśli jest to krytyczne dla zabezpieczeń lub przezroczyste.

Wyjątki

Bieżący typ dynamiczny nie został utworzony przez wywołanie CreateType() metody .

Uwagi

Właściwości IsSecurityCritical, IsSecuritySafeCriticali IsSecurityTransparent raportują poziom przezroczystości typu określonego przez środowisko uruchomieniowe języka wspólnego (CLR). W poniższej tabeli przedstawiono kombinacje tych właściwości:

Poziom zabezpieczeń IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Krytyczne true false false
Bezpieczne krytyczne true true false
Przezroczyste false false true

Użycie tych właściwości jest znacznie prostsze niż badanie adnotacji zabezpieczeń zestawu i jego typów, sprawdzanie bieżącego poziomu zaufania i próby zduplikowania reguł środowiska uruchomieniowego.

Środowisko uruchomieniowe rozpoczyna ocenianie poziomów przezroczystości w zestawie. Jeśli na przykład zestaw dynamiczny ma krytyczne znaczenie dla zabezpieczeń, adnotacje w typach są ignorowane, a wszystkie typy mają krytyczne znaczenie dla zabezpieczeń.

Domyślnie zestaw dynamiczny dziedziczy przezroczystość zestawu, który go emituje. Tę wartość domyślną można zastąpić przy użyciu przeciążenia metody AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>), AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)lub AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) i określania atrybutów zabezpieczeń. Nie można podnieść poziomów zabezpieczeń, wykonując to czynności; oznacza to, że przezroczysty kod nie może emitować kodu krytycznego pod względem zabezpieczeń ani kodu o znaczeniu krytycznym dla bezpieczeństwa. Atrybuty muszą być określone podczas tworzenia zestawu dynamicznego lub nie obowiązują, dopóki zestaw nie zostanie zapisany na dysku i ponownie załadowany.

Uwaga

Dziedziczenie domyślne jest ograniczone do oceny przezroczystości w czasie wykonywania. Do zestawu dynamicznego nie są stosowane żadne atrybuty. Jeśli chcesz dodać atrybuty zabezpieczeń, musisz zastosować je samodzielnie.

Aby uzyskać więcej informacji na temat emisji odbicia i przejrzystości, zobacz Problemy z zabezpieczeniami w emitowaniu odbicia. Aby uzyskać informacje o przejrzystości, zobacz Zmiany zabezpieczeń.

Dotyczy

Zobacz też