以下の例では、このリファクタリングを使用して、 Info クラスの静的メソッド 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);
}
}
次の例では、 Info オブジェクトで動作する静的メソッド Merge がクラス Service で定義されています。 リファクタリングを使用して、 Merge を論理的に属するクラス Info のインスタンスメソッドにします。
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
};
}
}