CA2222: не уменьшайте видимость унаследованных членов
Товар | Значение |
---|---|
Идентификатор правила | CA2222 |
Категория | Microsoft.Usage |
Критическое изменение | Не критическое |
Причина
Закрытый метод в неуправляемом типе имеет сигнатуру, идентичную общедоступному методу, объявленному в базовом типе. Закрытый метод не является окончательным.
Примечание.
Это правило устарело. Дополнительные сведения см. в разделе "Устаревшие правила".
Описание правила
Не изменяйте модификатор доступа для унаследованных элементов. Если сделать унаследованный член закрытым, то доступ вызывающих объектов к реализации метода базового класса все равно не будет запрещен. Если член является закрытым и тип неуправляем, наследующие типы могут вызывать последнюю общедоступную реализацию метода в иерархии наследования. Если необходимо изменить модификатор доступа, метод должен быть помечен окончательным или его тип должен быть запечатан, чтобы предотвратить переопределение метода.
Устранение нарушений
Чтобы устранить нарушение этого правила, измените доступ на не закрытый. Кроме того, если язык программирования поддерживает его, можно сделать метод окончательным.
Когда лучше отключить предупреждения
Для этого правила отключать вывод предупреждений не следует.
Пример
В следующем примере показан тип, нарушающий это правило.
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){}
}
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по