Partager via


Demandes d'héritage

Les demandes d'héritage appliquées aux classes ont une signification différente des demandes d'héritage appliquées aux méthodes. Vous pouvez placer des demandes d'héritage au niveau de la classe pour vous assurer que seul le code ayant l'autorisation spécifiée peut hériter de votre classe. Les demandes d'héritage appliquées à des méthodes nécessitent que le code ait l'autorisation spécifiée pour substituer la méthode.

Demandes d'héritage de classe

Une demande d'héritage appliquée à une classe a pour effet de demander que toutes les classes dérivées de la classe parente aient l'autorisation spécifiée. Par exemple, si la classe B doit hériter de la classe A et si cette dernière est protégée par une demande d'héritage, alors B doit recevoir cette autorisation pour pouvoir s'exécuter. Si la classe B reçoit cette autorisation et dérive de la classe A, la classe C doit aussi avoir l'autorisation demandée par A si elle doit dériver de B.

L'exemple de code suivant utilise une demande d'héritage pour exiger que toute classe qui hérite de la classe MyClass1 ait l'autorisation personnalisée CustomPermissionAttribute. Cette autorisation est une autorisation personnalisée hypothétique et n'existe pas dans le .NET Framework. La demande est faite en passant la valeur d'énumération System.Security.Permissions.SecurityAction.InheritanceDemand à CustomPermissionAttribute.

<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.
    }
}

Demandes d'héritage de méthode

Placer une demande d'héritage sur une méthode statique dans la classe de base n'a aucun impact sur les classes dérivées car les méthodes statiques ne sont pas liées. Toutefois, placer une demande d'héritage sur toute méthode non statique dans la classe de base a le même effet qu'une demande d'héritage sur la classe. Toutes les méthodes dans la classe dérivée, y compris le constructeur pour la classe, doivent répondre à la demande d'héritage.

Voir aussi

Concepts

Demandes de sécurité
Création de vos propres autorisations d'accès du code
Ajout de la prise en charge de la sécurité déclarative

Autres ressources

Extension des métadonnées à l'aide des attributs
Sécurité d'accès du code