Błąd kompilatora CS0507
"function1": nie można zmienić modyfikatorów dostępu podczas zastępowania "access" dziedziczonego elementu członkowskiego "function2"
Podjęto próbę zmiany specyfikacji dostępu w zastąpieniu metody.
Przykład 1
Poniższy przykład generuje plik CS0507.
// CS0507.cs
abstract public class clx
{
virtual protected void f() {}
}
public class cly : clx
{
public override void f() {} // CS0507
public static void Main() {}
}
Przykład 2
CS0507 może również wystąpić, jeśli klasa próbuje zastąpić metodę oznaczoną jako protected internal
zdefiniowaną w metadanych, do których odwołuje się odwołanie. W takiej sytuacji metoda zastępowania powinna być oznaczona jako protected
.
// CS0507_b.cs
// compile with: /target:library
abstract public class clx
{
virtual protected internal void f() {}
}
Poniższy przykład generuje plik CS0507.
// CS0507_c.cs
// compile with: /reference:cs0507_b.dll
public class cly : clx
{
protected internal override void f() {} // CS0507
// try the following line instead
// protected override void f() {} // OK
public static void Main() {}
}
Współpracuj z nami w serwisie GitHub
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.