TypeBuilder.IsSecurityCritical Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob der aktuelle Typ sicherheitsrelevant ist und daher wichtige Vorgänge ausführen darf.
public:
virtual property bool IsSecurityCritical { bool get(); };
public override bool IsSecurityCritical { get; }
member this.IsSecurityCritical : bool
Public Overrides ReadOnly Property IsSecurityCritical As Boolean
Eigenschaftswert
true
, wenn der aktuelle Typ sicherheitsrelevant ist. false
, wenn er sicherheitstransparent ist.
Ausnahmen
Der aktuelle dynamische Typ wurde nicht durch Aufrufen der CreateType()-Methode erstellt.
Hinweise
Die IsSecurityCriticalEigenschaften , IsSecuritySafeCriticalund IsSecurityTransparent melden die Transparenzebene des Typs, die von der Common Language Runtime (CLR) bestimmt wird. Die Kombinationen dieser Eigenschaften sind in der folgenden Tabelle dargestellt:
Sicherheitsstufe | IsSecurityCritical | IsSecuritySafeCritical | IsSecurityTransparent |
---|---|---|---|
Kritisch | true |
false |
false |
Sicherheitskritisch | true |
true |
false |
Transparent | false |
false |
true |
Ein Verwenden dieser Eigenschaften ist deutlich einfacher als das Untersuchen der Sicherheitsanmerkungen einer Assembly und der zugehörigen Typen, das Überprüfen der aktuellen Vertrauensebene und das Versuchen, die Laufzeitregeln zu duplizieren.
Die Runtime beginnt mit der Auswertung der Transparenzebenen in der Assembly. Wenn die dynamische Assembly beispielsweise sicherheitskritisch ist, werden Anmerkungen zu Typen ignoriert, und alle Typen sind sicherheitskritisch.
Standardmäßig erbt eine dynamische Assembly die Transparenz der Assembly, die sie ausgibt. Sie können diese Standardeinstellung überschreiben, indem Sie die AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)Methodenüberladung , AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)oder verwenden AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) und Sicherheitsattribute angeben. Dadurch können Sie die Sicherheitsstufen nicht erhöhen. Das heißt, transparenter Code kann keinen sicherheitskritischen oder sicherheitskritischen Code ausgeben. Attribute müssen angegeben werden, wenn die dynamische Assembly erstellt wird, oder sie werden erst wirksam, wenn die Assembly auf dem Datenträger gespeichert und neu geladen wurde.
Hinweis
Die Standardvererbung ist auf die Auswertung der Transparenz der Laufzeit beschränkt. Auf die dynamische Assembly werden keine Attribute angewendet. Wenn Sie Sicherheitsattribute hinzufügen möchten, müssen Sie diese selbst anwenden.
Weitere Informationen zu Reflektions-Emitt und Transparenz finden Sie unter Sicherheitsprobleme in Reflection Emit. Informationen zur Transparenz finden Sie unter Sicherheitsänderungen.
Gilt für:
Weitere Informationen
- IsSecuritySafeCritical
- IsSecurityTransparent
- Sicherheitsaspekte bei der Reflektionsausgabe
- Security Considerations for Reflection (Sicherheitsüberlegungen für die Reflektion)
- Änderungen der Sicherheit in .NET Framework 4.0
- Sicherheitstransparenter Code, Ebene 1
- Sicherheitstransparenter Code, Ebene 2