Freigeben über


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.

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 System.Security.Permissions.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

Sicherheitsforderungen
Erstellen von eigenen Codezugriffsberechtigungen
Hinzufügen der Unterstützung der deklarativen Sicherheit

Weitere Ressourcen

Erweitern von Metadaten mithilfe von Attributen
Codezugriffssicherheit