次の方法で共有


CA1058:型は、一定の基本型を拡張することはできません

プロパティ
ルール ID CA1058
Title 型は、一定の基本型を拡張することはできません
[カテゴリ] デザイン
修正が中断ありか中断なしか あり
.NET 10 で既定で有効 いいえ

原因

型によって次のいずれかの基本型が拡張されます。

既定では、この規則の対象は外部から参照可能な型のみですが、これは構成可能です。

規則の説明

例外は System.Exception か、System 名前空間のいずれかのサブクラスから派生する必要があります。

基になるオブジェクト モデルまたはデータ ソースの XML ビューを作成する場合、XmlDocument のサブクラスを作成しないでください。

非ジェネリック コレクション

可能な限り、ジェネリック コレクションを使用または拡張してください。 以前に出荷していない限り、コードでは非ジェネリック コレクションを拡張しないでください。

不適切な使用の例

public class MyCollection : CollectionBase
{
}

public class MyReadOnlyCollection : ReadOnlyCollectionBase
{
}

適切な使用の例

public class MyCollection : Collection<T>
{
}

public class MyReadOnlyCollection : ReadOnlyCollection<T>
{
}

違反の修正方法

この規則違反を修正するには、別の基本データ型またはジェネリック コレクションから型を派生させます。

どのようなときに警告を抑制するか

ApplicationException に関する違反については、この規則からの警告を非表示にしないでください。 XmlDocument に関する違反については、この規則からの警告を非表示にしても問題ありません。 以前、コードがリリースされた場合、非ジェネリック コレクションに関する警告を非表示にしても問題ありません。

警告を抑制する

単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。

#pragma warning disable CA1058
// The code that's violating the rule is on this line.
#pragma warning restore CA1058

ファイル、フォルダー、またはプロジェクトの規則を無効にするには、noneでその重要度を に設定します。

[*.{cs,vb}]
dotnet_diagnostic.CA1058.severity = none

詳細については、「コード分析の警告を抑制する方法」を参照してください。

分析するコードを構成する

次のオプションを使用して、コードベースのどの部分に対してこの規則を実行するか構成します。

このオプションを構成できる対象は、この規則だけ、それを適用するすべての規則、それを適用するこのカテゴリ (デザイン) のすべての規則のいずれかです。 詳細については、「コード品質規則の構成オプション」を参照してください。

特定の API サーフェイスを含める

api_surface オプションを設定することで、アクセスの可否に基づいてこのルールを実行するコードベースの部分を構成できます。 たとえば、非パブリック API サーフェイスでのみ規則を実行するように指定するには、プロジェクトの .editorconfig ファイルに次のキーと値のペアを追加します。

dotnet_code_quality.CAXXXX.api_surface = private, internal

メモ

XXXXCAXXXX 部分を該当するルールの ID に置き換えます。