Sdílet prostřednictvím


Compilerwarnung (Stufe 1) CS0688

Aktualisiert: November 2007

Fehlermeldung

"Methode1" hat einen Verknüpfungsaufruf, überschreibt bzw. implementiert aber "Methode2", die keinen Verknüpfungsaufruf enthält. Möglicherweise besteht eine Sicherheitslücke.
'method1' has a link demand, but overrides or implements 'method2' which does not have a link demand. A security hole may exist.

Der auf der abgeleiteten Klasse festgelegte Verknüpfungsaufruf kann leicht durch den Aufruf einer Basisklassenmethode umgangen werden. Um diese Sicherheitslücke zu schließen, müssen die Klassenmethoden ebenfalls den Verknüpfungsaufruf verwenden. Weitere Informationen finden Sie unter Anforderung und Verknüpfungsanforderung.

Beispiel

Im folgenden Beispiel wird CS0688 generiert: Um die Warnung zu beheben, ohne die Basisklasse verändern zu müssen, entfernen Sie das Sicherheitsattribut aus der überschreibenden Methode. Dadurch wird das Sicherheitsproblem nicht gelöst.

// 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()
    {
    }
}