Udostępnij za pośrednictwem


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){}       
    }
}