Не объявляйте виртуальные члены в запечатанных типах
Обновлен: Ноябрь 2007
TypeName |
DoNotDeclareVirtualMembersInSealedTypes |
CheckId |
CA1048 |
Категория |
Microsoft.Design |
Критическое изменение |
Критическое изменение |
Причина
Открытый тип является запечатанным и объявляет метод, обладающий свойством virtual (Overridable в Visual Basic) и не являющийся окончательным. Это правило не касается нарушений типов делегатов, в которых такой шаблон обязателен.
Описание правила
Типы объявляют методы как виртуальные, чтобы наследующие типы могли переопределять реализацию виртуального метода. По определению невозможно наследовать от запечатанного типа, поэтому объявлять виртуальные метода в запечатанном типе не имеет смысла.
Компиляторы Visual Basic .NET и C# запрещают нарушение этого правила типами.
Предотвращение нарушений
Чтобы устранить нарушение этого правила, сделайте метод невиртуальным или сделайте тип ненаследуемым.
Отключение предупреждений
Не следует отключать вывод предупреждений для этого правила. Если оставить тип в текущем состоянии, могут возникнуть проблемы обслуживания, а никаких преимуществ это не даст.
Пример
В следующем примере демонстрируется тип, нарушающий это правило.
using namespace System;
namespace DesignLibrary
{
public ref class SomeType sealed
{
public:
virtual bool VirtualFunction() { return true; }
};
}