ReSharper 2026.1 Help

抽象クラスをインターフェースに変換リファクタリング

このリファクタリングでは、抽象 クラスをインターフェースに 変換できます。 クラスが複数の抽象クラスを継承したい場合などに役立ちます。この場合、一方をインターフェースに簡単に変換できます。

以下の例を考えてみましょう。 リファクタリングを適用した後、クラスはインターフェースに変換されます。

public abstract class CachedItem { public abstract int Id { get; set; } public abstract void Register(); public abstract void UnRegister(); }
public interface CachedItem { int Id { get; set; } void Register(); void UnRegister(); }

抽象クラスをインターフェースに変換する

  1. 次のいずれかの方法で抽象クラスを選択します。

    • エディターで、抽象クラスの名前にキャレットを置きます。

    • ソリューションエクスプローラーで抽象クラスを選択します。

    • ファイル構造ウィンドウウィンドウで抽象クラスを選択します。

    • クラスビューで抽象クラスを選択します。

    • オブジェクトブラウザーで抽象クラスを選択します。

    • 型依存関係ダイアグラムで抽象クラスを選択します。

  2. 次のいずれかを実行します。

    • Control+Shift+R を押し、を 抽象クラスをインターフェースに変換 を選択します。

    • 右クリックして、コンテキストメニューから リファクタリング | 抽象クラスをインターフェースに変換 を選択します。

    • メインメニューから ReSharper | リファクタリング | 変換 | インターフェースへの抽象クラス ... を選択します。

  3. 抽象クラスに非抽象メンバーが含まれている場合、ReSharperは、それらのメンバーの本体やアクセサーが削除されることを通知するダイアログを表示します。 これを避けるには、非抽象メンバーのロジックを子クラスまたは他の場所に手動で移動し、再度リファクタリングを呼び出す必要があります。

  4. 競合が識別されない場合、抽象クラスは同じ名前のインターフェースに変換され、それに応じて抽象メンバーの修飾子が変更されます。 それ以外の場合は、 競合を解決します。

デフォルトでは、インターフェースの 命名スタイルでは、 I で始まるインターフェース名が必要です。 設定を変更しなかった場合、インターフェース名は一貫性のない名前でハイライトされます。 Alt+Enter を押し、対応する クイックフィックスを使用してインターフェースの 名前を変更するだけです。

この機能は、次の言語とテクノロジーで サポートされています。

言語: C#

言語: VB.NET

言語: C++

言語: ASP.NET

言語: Razor

言語: XAML

言語: Resx

言語: スクリプトの作成

言語: SQL

この機能は C# で利用可能です

この機能は Visual Basic で利用可能です

この機能は C++ では使用できません

この機能は ASP.NET では使用できません

この機能は Razor では使用できません

機能は XAML では使用できません

機能はリソースファイルでは使用できません

機能はビルドスクリプトファイルでは使用できません

機能は SQL/NoSQL ファイルおよびインジェクションでは利用できません

ここで説明する手順と例では、C# の機能の使用について説明します。 他の言語の詳細については、 言語およびフレームワーク セクションの対応するトピックを参照してください。

2026 年 6 月 12 日