Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Inkonzisztens akadálymentesség: a "type" paramétertípus kevésbé hozzáférhető, mint a metódus
Ez a hiba akkor fordul elő, ha olyan metódust deklarál (beleértve a konstruktorokat is), amelynek paramétertípusa kevésbé elérhető, mint maga a metódus. Előfordulhat például, hogy egy nyilvános konstruktor egy belső vagy privát osztályt használ paramétertípusként.
A leggyakoribb forgatókönyv egy nyilvános metódus definiálása, de annak egyik paramétertípusa belső vagy privát. Ezzel inkonzisztencia jön létre, mert a külső kód látja a metódust, de nem tudja elérni a meghíváshoz szükséges típusokat.
A hiba elhárítása
- Azonosítsa a problémát okozó paramétertípust: Tekintse meg a hibaüzenetet, és nézze meg, hogy melyik paramétertípus kevésbé érhető el.
- Ellenőrizze a paramétertípus akadálymentességét: Kattintson a jobb gombbal a paramétertípusra az IDE-ben, és válassza az "Ugrás a definícióra" lehetőséget (vagy nyomja le az F12 billentyűt) a deklarált állapot megtekintéséhez.
- Az akadálymentességi szintek összehasonlítása: Győződjön meg arról, hogy a paraméter típusa legalább olyan akadálymentes, mint az azt használó módszer.
Példák
1. példa: Nyilvános metódus privát paramétertípussal
A következő minta a CS0051-et hozza létre, mert a metódus F nyilvános, de a paraméter típusa B privát:
// CS0051.cs
public class A
{
// B is implicitly private here.
class B
{
}
public static void F(B b) // CS0051
{
}
public static void Main()
{
}
}
2. példa: Belső paramétertípusú nyilvános konstruktor
Ez egy gyakori forgatókönyv, amelyben nyilvános konstruktor van, de a paraméter típusa belső:
// Another file or assembly.
internal class DatabaseConfiguration
{
public string ConnectionString { get; set; }
}
// In your main class.
public class DataService
{
// This causes CS0051 because the constructor is public.
// but DatabaseConfiguration is internal.
public DataService(DatabaseConfiguration config) // CS0051
{
// Implementation.
}
}
A hiba kijavítása
Válasszon az alábbi módszerek közül:
A paramétertípus akadálymentesebbé tétele: Módosítsa a paramétertípust úgy, hogy megfeleljen vagy meghaladja a metódus akadálymentességét:
public class A { // Make B public to match the accessibility of method F. public class B { } public static void F(B b) // Now works correctly { } }A metódus akadálymentességének csökkentése: A metódus akadálymentesítése a paramétertípusnak megfelelően:
public class A { class B // B remains private. { } // Make F internal or private to match B's accessibility. internal static void F(B b) // Now works correctly { } }Akadálymentesebb felület vagy alaposztály használata: A kevésbé akadálymentes típus közvetlen használata helyett használjon nyilvános felületet vagy alaposztályt:
public interface IConfiguration { string ConnectionString { get; } } internal class DatabaseConfiguration : IConfiguration { public string ConnectionString { get; set; } } public class DataService { // Use the public interface instead. public DataService(IConfiguration config) // Works correctly { // Implementation. } }