Errore del compilatore CS0060

Accessibilità incoerente: la classe base 'Class1' è meno accessibile della classe 'Class2'

In C# una classe derivata non può avere un'accessibilità più ampia rispetto alla relativa classe di base. Se la classe base è meno accessibile, i consumatori della classe derivata potrebbero avere involontariamente accesso a una classe che non dovrebbero vedere.

Le sottoclassi non possono mai essere più accessibili rispetto alle relative classi di base. Ciò consentirebbe ai consumatori della sottoclasse un accesso più ampio al tipo di base di quello previsto.

L'esempio seguente produce CS0060 perché Class1 è internal e Class2 è public.

internal class Class1
{
}

public class Class2 : Class1 // 🛑 CS0060: Class1 is less accessible
{
}

È possibile risolvere CS0060 in uno dei due modi seguenti:

  • Rendere più accessibile la classe di base: modificare Class1 in modo che sia public.
  • Limitare l'accessibilità della classe derivata: modificare Class2 come internal.

Suggerimento

Le classi di base possono essere più accessibili rispetto alle sottoclassi, ma mai meno accessibili.

Vedere anche