CA2222: Nie zmniejszaj widoczności dziedziczonego elementu członkowskiego
Pozycja | Wartość |
---|---|
Ruleid | CA2222 |
Kategoria | Microsoft.Usage |
Zmiana powodująca niezgodność | Niezgodność |
Przyczyna
Metoda prywatna w niezaziemowanym typie ma podpis identyczny z metodą publiczną zadeklarowaną w typie podstawowym. Metoda prywatna nie jest ostateczna.
Uwaga
Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.
Opis reguły
Nie zmieniaj modyfikatora dostępu dla dziedziczych elementów członkowskich. Zmiana dziedziczonej składowej na prywatną nie uniemożliwia wywołującym uzyskania dostępu do implementacji metody klasy podstawowej. Jeśli element członkowski jest prywatny i typ jest niezaużytowany, dziedziczenie typów może wywołać ostatnią publiczną implementację metody w hierarchii dziedziczenia. Jeśli musisz zmienić modyfikator dostępu, należy oznaczyć metodę jako ostateczną lub jej typ należy zapieczętować, aby zapobiec przesłonięciu metody.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, zmień dostęp na inny niż prywatny. Alternatywnie, jeśli język programowania go obsługuje, możesz ustawić metodę ostateczną.
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły.
Przykład
W poniższym przykładzie pokazano typ naruszający tę regułę.
using System;
namespace UsageLibrary
{
public class ABaseType
{
public void BasePublicMethod(int argument1) {}
}
public class ADerivedType:ABaseType
{
// Violates rule: DoNotDecreaseInheritedMemberVisibility.
// The compiler returns an error if this is overridden instead of new.
private new void BasePublicMethod(int argument1){}
}
}
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla