CA1048: Sealed 型の仮想メンバーを宣言しません
TypeName |
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; }
};
}