リレーショナルメンバーを生成する
JetBrains Rider は、選択したフィールドやプロパティを使って、リレーション演算子と関連インターフェースの実装を自動的にオーバーロードするのに役立ちます。 デフォルトでは、JetBrains Rider は 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 を押すか、メインメニューから を選択してください。 あるいは、 Ctrl+Shift+A を押して、ポップアップでコマンド名を入力して、そこで選択することもできます。
生成する ポップアップで、 関係メンバー を選択します。
表示される 生成する ダイアログで、プロパティとフィールドの一覧が表示されます。 型の比較に使用するメンバーを選択します。

型にフィールドまたはプロパティが存在しない場合、またはいずれも選択しない場合、JetBrains Rider は設定に応じて新しい
NotImplementedException()をスローする、デフォルト値を返す、または生成されたメソッドの本体にコンパイルできないコードを配置します。必要に応じて、ダイアログで次のコントロールを使用します。
フィールドは null 可能 — 自分の型に nullable フィールドやプロパティがある場合に表示されます。 デフォルトでこのチェックボックスが選択されており、JetBrains Rider は選択されたフィールドに対して null チェックを生成します。 null チェックが不要な場合は、このチェックボックスをオフにできます。
文字列比較 — 型に文字列フィールドがある場合に表示されます。 JetBrains Rider は選択した文字列に対して
string.Compare(string, string, StringComparison)を生成し、セレクターで StringComparison 引数に生成する値を選択できます。CompareTo はすでに存在する —
CompareTo()の実装がすでに存在する場合に表示され、次のいずれかを選択できます。メソッドがすでに存在する場合は置換します。
新しく生成されたメソッドを既存のメソッドと並べて置きます。
新しいメソッドの生成をすべてスキップします。
IComparable インターフェースを実装する — このチェックボックスをオンにすると、
IComparable<T>に加えてIComparableインターフェースの実装も生成する、つまりCompareTo(T)に加えてCompareTo(object)メソッドも生成する。
OK をクリックしてウィザードを完了します。