CA1048:不要在密封类型中声明虚拟成员
类型名 |
DoNotDeclareVirtualMembersInSealedTypes |
CheckId |
CA1048 |
类别 |
Microsoft.Design |
是否重大更改 |
是 |
原因
某公共类型是密封的,并且声明了既 virtual(在 Visual Basic 中为 Overridable)又非 final 的方法。 该规则不报告委托类型的冲突,委托类型必须遵循此模式。
规则说明
类型将方法声明为虚方法,使继承类型可以重写虚方法的实现。 根据定义,不能从密封类型继承,这使得密封类型上的虚方法没有意义。
Visual Basic .NET 和 C# 编译器不允许类型与该规则冲突。
如何解决冲突
要修复与该规则的冲突,请使方法成为非虚方法,或使类型可继承。
何时禁止显示警告
不要禁止显示此规则发出的警告。 使类型保持当前状态可能引发维护问题,不会带来任何好处。
示例
下面的示例演示一个与该规则冲突的类型。
using namespace System;
namespace DesignLibrary
{
public ref class SomeType sealed
{
public:
virtual bool VirtualFunction() { return true; }
};
}