ReSharper 2026.1 Help

クラスの抽出リファクタリング

このリファクタリングにより、既存のクラスのメンバーを新しいクラスに移動できます。 複数のタスクを担当する単一のクラスを、それぞれが単一の責任を持つ複数のクラスに置き換える必要がある場合に役立ちます。

ReSharper は、新しく作成されたクラスにアクセスできる参照フィールドを自動的に作成します。 必要に応じて、元のクラスの抽出されたメンバーをコピーとして残すことも、実装が新しいクラスの同じメンバーに委譲されるようにすることもできます。

以下の例では、新しい Logger クラスに LogError メソッドを抽出します

class Shape { public void Draw() { try { /*draw*/ } catch (Exception e) { LogError(e); } } public static void LogError(Exception e) { File.WriteAllText(@"c:\Errors\Exception.txt", e.ToString()); } }
class Shape { public void Draw() { try { /*draw*/ } catch (Exception e) { Logger.LogError(e); } } } class Logger { public static void LogError(Exception e) { File.WriteAllText(@"c:\Errors\Exception.txt", e.ToString()); } }

選択したメンバーから新しいクラスを作成する

  1. 次のいずれかの方法で移動するクラスまたはメンバーを選択します。

    • エディターで、クラスまたはメンバーの名前にキャレットを置きます。

    • ファイル構造ウィンドウウィンドウでクラスまたはメンバーを選択します。

    • クラスビューでクラスまたはメンバーを選択します。

    • オブジェクトブラウザーでクラスまたはメンバーを選択します。

    • 型依存関係ダイアグラムでクラスまたはメンバーを選択します。

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

    • Control+Shift+R を押し、を クラスの抽出 を選択します。

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

    • メインメニューから ReSharper | リファクタリング | 抽出 | クラスの抽出… を選択します。

    クラスの抽出 ダイアログが開きます。

  3. 新しいクラスの名前とその配置場所(新しいファイルまたは元の型と同じファイル)を指定します。

  4. 新しいクラスに移動するメンバーを選択します。 メンバーを選択すると、ReSharper は選択したメンバーを使用している他のメンバーの抽出を提案します。 提案されたメンバーは、緑色の 抽出​​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠​​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠​​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠​⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠​ ラベルで識別できます。

    この提案を受け入れる必要はありませんが、受け入れる場合は、 提案されたすべてのメンバーを抽出する をクリックしてすべてを選択できます。

  5. 選択したすべてのメンバーには、 ソース クラスメンバー 列にセレクターがあります。 メンバーを現在のクラスで直接使用できるようにする場合は、このセレクターをクリックして、メソッドとプロパティに デリゲートラッパーの作成 を選択するか、プロパティとフィールドに コピー作成 を選択します。

  6. 抽出しない他のメンバーが使用する非公開メンバーを抽出する場合、ReSharper は抽出されたメンバーが非公開のままだとこれらの使用が機能しないことを警告します。 提案されたすべてのメンバーを抽出する をクリックして依存メンバーを選択するか、警告アイコンをクリックして、推奨される修正のいずれかを選択できます。

    ReSharper: クラスの抽出リファクタリング
  7. リファクタリングを適用するには、 次へ をクリックします。

  8. 競合するものが見つからない場合、ReSharper はすぐにリファクタリングを実行します。 それ以外の場合は、 競合を解決するように求められます。

ReSharper。 クラスの抽出リファクタリング

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

言語: C#

言語: VB.NET

言語: C++

言語: ASP.NET

言語: Razor

言語: XAML

言語: Resx

言語: スクリプトの作成

言語: SQL

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

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

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

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

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

機能は XAML で利用可能です

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

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

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

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

2026 年 6 月 12 日