関係メンバーを生成する
ReSharper は、選択したフィールドとプロパティを使用して、関係演算子と関連するインターフェースの実装を自動的にオーバーロードできます。デフォルトでは、ReSharper は IComparable<T> の実装を作成し、オプションで、演算子 >、<、≥、≤と IComparable の実装も生成されます。
以下の例では、このコマンドを使用して、Person クラスのオブジェクトを比較するときに int _birthYear および string _name フィールドを考慮に入れた関係メンバーを生成します。
生成前 | 生成後 |
|---|---|
class Person
{
private int _birthYear;
private string _name;
}
|
class Person : IComparable<Person>, IComparable
{
private int _birthYear;
private string _name;
public int CompareTo(Person other)
{
if (ReferenceEquals(this, other)) return 0;
if (ReferenceEquals(null, other)) return 1;
var birthYearComparison = _birthYear.CompareTo(other._birthYear);
if (birthYearComparison != 0) return birthYearComparison;
return string.Compare(_name, other._name, StringComparison.Ordinal);
}
// Optionally: Implementation of IComparable and relational operators
public int CompareTo(object obj)
{
if (ReferenceEquals(null, obj)) return 1;
if (ReferenceEquals(this, obj)) return 0;
if (!(obj is Person))
throw new ArgumentException($"Object must be of type {nameof(Person)}");
return CompareTo((Person) obj);
}
public static bool operator <(Person left, Person right)
{
return Comparer<Person>.Default.Compare(left, right) < 0;
}
public static bool operator >(Person left, Person right)
{
return Comparer<Person>.Default.Compare(left, right) > 0;
}
public static bool operator <=(Person left, Person right)
{
return Comparer<Person>.Default.Compare(left, right) <= 0;
}
public static bool operator >=(Person left, Person right)
{
return Comparer<Person>.Default.Compare(left, right) >= 0;
}
}
|
リレーショナルメンバーを生成する
エディターで、型名または型内のリレーショナルメンバーを挿入する行にキャレットを置きます。キャレットが型名上にある場合、生成されたコードは型宣言の先頭に追加されます。
Alt+Insert を押すか、メインメニューから を選択します。あるいは、Control+Shift+A を押して、ポップアップでコマンド名を入力して、そこで選択することもできます。
生成ポップアップで、関係メンバーを選択します。
表示される生成ダイアログには、プロパティとフィールドのリストが表示されます。タイプの比較に使用するメンバーを選択します。

タイプにフィールド / プロパティがない場合、またはそれらのいずれかを選択しない場合、ReSharper は設定に応じて、新しい
NotImplementedException()をスローし、デフォルト値を返し、生成されたメソッドの本体にコンパイルされないコードを置きます。ReSharper オプションのページで設定を行うことができます。必要に応じて、ダイアログで次のコントロールを使用します。
フィールドは null 可能 — タイプに null 許容フィールドまたはプロパティがある場合に表示されます。デフォルトでは、このチェックボックスが選択されています。これは、ReSharper が選択されたフィールドに対して null チェックを生成することを意味します。null チェックが必要ない場合は、このチェックボックスをオフにすることができます。
文字列比較 — 型に文字列フィールドがある場合に表示されます。ReSharper は、選択された文字列に対して
string.Compare(string, string, StringComparison)を生成します。セレクターを使用すると、StringComparison 引数に対して生成する値を選択できます。CompareTo はすでに存在する —
CompareTo()の実装がすでに存在する場合に表示され、次のいずれかを選択できます。メソッドがすでに存在する場合は置換します。
新しく生成されたメソッドを既存のメソッドと並べて置きます。
新しいメソッドの生成をすべてスキップします。
IComparable インターフェースを実装する — このチェックボックスをオンにすると、
IComparable<T>に加えてIComparableインターフェースの実装が生成されます。つまり、CompareTo(T)に加えてCompareTo(object)メソッドが生成されます。
完了をクリックしてウィザードを完了します。
オプションをクリックして、ReSharper オプションのページで一般的なコード生成設定を確認または変更することもできます。
この機能は、次の言語とテクノロジーでサポートされています。
ここで説明する手順と例では、C# の機能の使用について説明します。他の言語の詳細については、言語およびフレームワークセクションの対応するトピックを参照してください。
関連ページ:
さまざまな言語の ReSharper 機能
以下の表は、ReSharper の各機能がどの言語 / テクノロジーでサポートされているかを説明しています。言語固有の機能のみを記載しており、プロジェクト依存関係ダイアグラム、名前空間の調整リファクタリング、スタックトレースエクスプローラー、最近使用したファイルの表示など、プロジェクト / ソリューションスコープに関する多くの機能は含まれていません。コード解析:コードインスペクション
ASP.NET MVC 特有の機能
ReSharper には、一般的な ASP.NET 機能に加えて、ASP.NET MVC での作業をより簡単にサポートする特殊機能があります。構文のハイライト:ASP.NET MVC メソッド呼び出しとパラメーターの特別な構文のハイライト: コード補完:文字列リテラルでアクションとコントローラーを参照するための専用コード補完: ナビゲーションと検索:さまざまなナビゲーション機能がアクションとコントローラーでも機能します。コード生成:使用箇所から新しいコントローラーとアクションを作成する:20...
言語による ReSharper: MSBuild
MSBuild は、アプリケーションを構築するために広く使用されているプラットフォームです。特定の XML タグを使用して、プロジェクトの構築方法や実行方法を定義できます。ReSharper を使用すると、より速く行うことができます。コード検査:あらかじめ定義された要素またはその属性の名前を誤って入力した場合、ReSharper はそのような不一致についてハイライト表示します。まだ定義されていないプロパティを参照しようとすると、ReSharper はそのようなケースも検出します。MSBuild...
言語による ReSharper: SQL と NoSQL
このセクションには、SQL のようなファイルの ReSharper 機能と C# 文字列の SQL インジェクションに関する情報が含まれています。使用するデータベースによっては、ソリューション内に異なるダイアレクト(DBMS 固有の SQL バージョン)の SQL ファイルが存在する場合があります。各 SQL ファイルで構文のハイライト、コード補完、コードインスペクションが正しく機能するには、SQL ダイアレクトを設定する必要があります。SQL ダイアレクトの構成メインメニューからを選択するか、...
リレーショナルコンバーターを生成する
ReSharper は、選択したフィールドとプロパティを使用してから派生したネストされた比較クラスを作成できます。文字列比較アルゴリズムの選択と null チェックの生成に加えて、比較クラスをコンシューマーに公開する静的プロパティを生成することもできます。以下の例では、このコマンドを使用して、クラスのオブジェクトを比較するときに、およびフィールドを考慮に入れたリレーショナル比較関数を生成します。class Person { private int _birthYear; private stri...
型コンストラクターを生成する
コンストラクター生成ウィザードは、選択されたフィールド、プロパティ、自動プロパティのパラメーターを取るデフォルト以外のコンストラクターを作成します。生成されたコンストラクターはすべて同じパターンに従います。コンストラクターに含まれる各フィールド、プロパティ、自動プロパティは、パラメーターで初期化されます。パラメーターの名前は、対応するフィールドまたはプロパティの名前から導出されます。デフォルト以外の基本型コンストラクターがある場合、必要なパラメーターが生成されたコンストラクターに追加され、基本ク...