CA1000: ジェネリック型の静的メンバーを宣言しません
TypeName |
DoNotDeclareStaticMembersOnGenericTypes |
CheckId |
CA1000 |
カテゴリ |
Microsoft.Design |
互換性に影響する変更点 |
あり |
原因
外部から参照可能なジェネリック型に、static (Visual Basic では Shared) メンバーが含まれています。
規則の説明
ジェネリック型の static メンバーを呼び出すときには、その型の型引数も指定する必要があります。 推論をサポートしないジェネリック インスタンス メンバーを呼び出すときには、そのメンバーに型引数を指定する必要があります。 この 2 つの場合で、型引数を指定するときに使用される構文は異なりますが、混同される可能性があります。次に呼び出しの例を示します。
' Shared method in a generic type.
GenericType(Of Integer).SharedMethod()
' Generic instance method that does not support inference.
someObject.GenericMethod(Of Integer)()
// Static method in a generic type.
GenericType<int>.StaticMethod();
// Generic instance method that does not support inference.
someObject.GenericMethod<int>();
一般的に、メンバーが呼び出されたときに型引数を指定する必要がないように、前者の宣言はどちらも避ける必要があります。 その結果、ジェネリック型のメンバーを呼び出す構文がジェネリック型以外の構文と同じになります。 詳細については、「CA1004: ジェネリック メソッドは型パラメーターを指定しなければなりません」を参照してください。
違反の修正方法
このルールの違反を修正するには、静的メンバーを削除するか、インスタンス メンバーに変更します。
警告を抑制する状況
この規則による警告は抑制しないでください。 理解しやすく使いやすい構文でジェネリック型を指定することで、習得に必要な時間が短縮され、新しいライブラリの採用率が向上します。
関連規則
CA1005: ジェネリック型でパラメーターを使用しすぎないでください
CA1010: コレクションは、ジェネリック インターフェイスを実装しなければなりません
CA1006: ジェネリック型をメンバー シグネチャ内で入れ子にしません
CA1004: ジェネリック メソッドは型パラメーターを指定しなければなりません
CA1003: 汎用イベント ハンドラーのインスタンスを使用します