Vererbungsforderungen

Auf Klassen angewendete Vererbungsforderungen haben eine andere Bedeutung als auf Methoden angewendete Vererbungsforderungen. Durch das Platzieren von Vererbungsforderungen auf der Klassenebene stellen Sie sicher, dass nur Code mit der angegebenen Berechtigung von der Klasse erben kann. In Methoden platzierte Vererbungsforderungen machen es erforderlich, dass Code über die angegebene Berechtigung zum Überschreiben der Methode verfügt.

HinweisHinweis

In .NET Framework, Version 4 wurde ein neues Transparenzmodell eingeführt.Im Sicherheitstransparenter Code, Ebene 2-Modell wird sicherer Code mit dem SecurityCriticalAttribute-Attribut oder mit dem SecuritySafeCriticalAttribute-Attribut identifiziert.In sicherheitsrelevantem Code müssen Anrufer wie Erben gleichermaßen vollständig vertrauenswürdig sein.Typen oder Member, die von einem sicherheitsrelevanten Typ oder Member erben, müssen sicherheitsrelevant sein.Assemblys, die ältere Regeln für die Codezugriffssicherheit (Ebene 1) verwenden, können sicherheitsrelevante Typen und Member (Ebene 2) aufrufen, wenn sie vollständig vertrauenswürdig sind.Typen und Member der Ebene 2 müssen Vererbungsanforderungen jedoch ausdrücklich identifizieren, da implizite Vererbungsregeln der Ebene 2 nicht für Aufrufer der Ebene 1 gelten.

Auf Klassen angewendete Vererbungsforderungen

Eine auf eine Klasse angewendete vererbte Forderung bewirkt, dass für alle von der übergeordneten Klasse abgeleiteten Klassen die angegebene Berechtigung gefordert wird. Wenn z. B. Klasse B von Klasse A erben soll und Klasse A durch eine Vererbungsforderung geschützt wird, muss Klasse  B für die Ausführung die betreffende Berechtigung erteilt werden. Wenn Klasse B diese Berechtigung erteilt wird und diese von Klasse A abgeleitet wird, muss Klasse C, wenn sie von Klasse  B abgeleitet werden soll, ebenfalls die von Klasse  A geforderte Berechtigung haben. Diese Forderung kann nur deklarativ angewendet werden.

Im folgenden Codebeispiel wird mit einer Vererbungsforderung gefordert, das jede Klasse, die von der MyClass1-Klasse erbt, über die benutzerdefinierte Berechtigung CustomPermissionAttribute verfügen muss. Dies ist eine hypothetische benutzerdefinierte Berechtigung, die in .NET Framework nicht vorhanden ist. Diese Forderung wird vorgenommen, indem an das CustomPermissionAttribute eine SecurityAction.InheritanceDemand-Enumeration übergeben wird.

<CustomPermissionAttribute(SecurityAction.InheritanceDemand)> _
Public Class MyClass1
    Public Sub New()
    End Sub 
   
    Public Overridable Function ReadData() As String
        ' Access a custom resource.
    End Function
End Class    
[CustomPermissionAttribute(SecurityAction.InheritanceDemand)]
public class MyClass
{
    public MyClass()
    {    
    }   

    public virtual string ReadData()
    {
        // Access a custom resource.
    }
}

Auf Methoden angewendete Vererbungsforderungen

Das Platzieren einer Vererbungsforderung für eine statische Methode in der Basisklasse hat keine Auswirkungen auf abgeleitete Klassen, da die statischen Methoden nicht verknüpft sind. Das Platzieren einer Vererbungsforderung für eine beliebige, nicht statische Methode in der Basisklasse hat allerdings dieselben Auswirkungen wie eine Vererbungsforderung für eine Klasse. Alle Methoden in der abgeleiteten Klasse, einschließlich des Klassenkonstruktors, müssen die Vererbungsforderung erfüllen.

Siehe auch

Konzepte

Erweitern von Metadaten mithilfe von Attributen

Sicherheitsforderungen

Erstellen von eigenen Codezugriffsberechtigungen

Hinzufügen der Unterstützung der deklarativen Sicherheit

Codezugriffssicherheit