メソッドを非静的にするリファクタリング
このリファクタリングにより、静的メソッドを元の型または別の型のインスタンスメソッドに変換できます。 新しいインスタンスメソッドのターゲット型は、メソッドにパラメーターとして渡される型のいずれかから選択できます。 このメソッドの使用方法、実装方法、オーバーライドはすべて自動的に更新されます。
このリファクタリングは、現在のソリューションで定義されている型のパラメーターを少なくとも 1 つ持つ静的メソッドにのみ適用できます。
以下の例では、このリファクタリングを使用して、 情報 クラスの静的メソッド Merge を同じ型のインスタンスメソッドに変換します。
class Info
{
string Id { get; set; }
string Name { get; set; }
static Info Merge(Info i1, Info i2)
{
return new Info
{
Id = i1.Id + i2.Id,
Name = i1.Name + i2.Name
};
}
void Test()
{
var i1 = new Info()
{ Id = "123", Name = "AA" };
var i2 = new Info()
{ Id = "456", Name = "BB" };
var merged =
Info.Merge(i1, i2);
}
}
class Info
{
string Id { get; set; }
string Name { get; set; }
Info Merge(Info i2)
{
return new Info
{
Id = Id + i2.Id,
Name = Name + i2.Name
};
}
void Test()
{
var i1 = new Info()
{ Id = "123", Name = "AA" };
var i2 = new Info()
{ Id = "456", Name = "BB" };
var merged =
i1.Merge(i2);
}
}
次の例では、 情報 オブジェクトで動作する静的メソッド Merge がクラス Service で定義されています。 リファクタリングを使用して、 Merge を論理的に属するクラス 情報 のインスタンスメソッドにします。
class Service
{
public static Info Merge(Info i1,
Info i2)
{
return new Info
{
Id = i1.Id + i2.Id,
Name = i1.Name + i2.Name
};
}
}
class Info
{
public string Id { get; set; }
public string Name { get; set; }
void Test()
{
var info1 = new Info()
{ Id = "123", Name = "AA" };
var info2 = new Info()
{ Id = "456", Name = "BB" };
var merged =
Service.Merge(info1, info2);
}
}
class Service
{
}
class Info
{
public string Id { get; set; }
public string Name { get; set; }
void Test()
{
var info1 = new Info()
{ Id = "123", Name = "AA" };
var info2 = new Info()
{ Id = "456", Name = "BB" };
var merged =
info1.Merge(info2);
}
public Info Merge(Info i2)
{
return new Info
{
Id = Id + i2.Id,
Name = Name + i2.Name
};
}
}
静的メソッドをインスタンスメソッドに変換する
エディターで static メソッドの宣言または使用箇所にキャレットを置くか、 構造ウィンドウウィンドウで選択します。
次のいずれかを実行します:
Ctrl+Alt+Shift+T を押し、を メソッドを非静的にする を選択します。
メインメニューから を選択します。
メソッドを非静的にする ダイアログが開きます。
リストからパラメーターを選択します。 このメソッドは、パラメーター型のインスタンスメソッドに変換されます。
リファクタリングを適用するには、 次へ をクリックします。
競合するものが見つからない場合、JetBrains Rider はすぐにリファクタリングを実行します。 それ以外の場合は、 競合を解決するように求められます。

2026 年 6 月 12 日