JetBrains Rider 2025.2 Help

将方法转换为非静态重构

此重构允许您将静态方法转换为原始类型或其他类型的实例方法。 新实例方法的目标类型可以从传递给方法的参数类型中选择。 方法的所有用法、实现和重写都会自动更新。

此重构仅适用于至少有一个当前解决方案中定义的类型参数的静态方法。

在下面的示例中,我们使用此重构将 信息 类的静态方法 合并 转换为相同类型的实例方法:

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 }; } }

将静态方法转换为实例方法

  1. 将光标放在编辑器中静态方法的声明或用法处,或者在 结构窗口窗口中选择它。

  2. 请执行以下操作之一:

    • Ctrl+Alt+Shift+T 然后选择 将方法设为非 static

    • 在主菜单中选择 重构 | 将方法设为非静态

    将方法设为非 static 对话框将打开。

  3. 从列表中选择一个参数。 该方法将被转换为该参数类型的实例方法。

  4. 要应用重构,请点击 下一步

  5. 如果未发现冲突,JetBrains Rider会立即执行重构。 否则,它会提示您 解决冲突

JetBrains Rider:将方法转换为非静态重构
最后修改日期: 2025年 9月 26日