Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 1) CS0688

Metoda "method1" ma żądanie łącza, ale zastępuje lub implementuje metodę "method2", która nie ma zapotrzebowania na łącza. Może istnieć dziura zabezpieczeń.

Żądanie połączenia skonfigurowane dla metody klasy pochodnej można łatwo obejść, wywołując metodę klasy bazowej. Aby zamknąć dziurę zabezpieczeń, metoda klasy bazowej musi również używać zapotrzebowania na łącza. Aby uzyskać więcej informacji, zobacz Demand vs. LinkDemand.

Przykład

Poniższy przykład generuje plik CS0688. Aby rozwiązać problem z ostrzeżeniem bez modyfikowania klasy bazowej, usuń atrybut zabezpieczeń z metody zastępowania. Nie rozwiąże to problemu z zabezpieczeniami.

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