将方法转换为非静态的重构
此重构允许您将静态方法转换为原始类型或其他类型的实例方法。 新实例方法的目标类型可以从传递给方法的参数类型中选择。 方法的所有用法、实现和重写都会自动更新。
此重构只能应用于至少有一个当前解决方案中定义的类型参数的静态方法。
在下面的示例中,我们使用此重构将 信息 类的静态方法 合并 转换为相同类型的实例方法:
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);
}
}
在以下示例中,静态方法 合并 在 服务 类中定义,用于处理 信息 对象。 我们使用重构将 合并 转换为 信息 类的实例方法,使其逻辑上归属于该类:
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
};
}
}
将静态方法转换为实例方法

此功能在以下语言和技术中 受支持:
此处提供的说明和示例针对在 C# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相应主题。
最后修改日期: 2025年 9月 27日