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.
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.
// 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()
{
}
}
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: