Partager via


Avertissement du compilateur (niveau 1) CS0688

Mise à jour : novembre 2007

Message d'erreur

'méthode 1' a une demande de liaison, mais se substitue à ou implémente 'méthode 2' qui n'a pas une demande de liaison. Un risque potentiel existe.
'method1' has a link demand, but overrides or implements 'method2' which does not have a link demand. A security hole may exist.

La demande de liaison configurée sur la méthode de classe dérivée peut être facilement circonvenue via l'appel de la méthode de classe de base. Pour fermer le trou de sécurité, la méthode de classe de base doit également utiliser la demande de liaison. Pour plus d'informations, consultez Comparaison entre Demand et LinkDemand

Exemple

L'exemple suivant génère l'erreur CS0688. Pour résoudre l'avertissement sans modifier la classe de base, supprimez l'attribut de sécurité de la méthode qui provoque la substitution. Cela ne résoudra pas le problème de sécurité.

// CS0688.cs
// compile with: /W:1
using System;
using System.Security.Permissions;

class Base 
{
    //Uncomment the following line to close the security hole
    //[FileIOPermission(SecurityAction.LinkDemand, All=@"C:\\")]
    public virtual void DoScaryFileStuff()
    {
    }
}

class Derived: Base
{
    [FileIOPermission(SecurityAction.LinkDemand, All=@"C:\\")] // CS0688
    public override void DoScaryFileStuff()
    {
    }
    static void Main()
    {
    }
}