【问题标题】:Refactor Implicit Variable Assignment in Array to Explicit Assignment Outside of Array将数组中的隐式变量赋值重构为数组外的显式赋值
【发布时间】:2014-02-22 18:19:51
【问题描述】:

我有一个将变量隐式添加到数组的代码块,即

context.People.Add( new Person { Name = "Joe", Age = 45 }, new Person { Name = "Alicia", Age = 33 } );

我需要的是在代码块之外可以访问变量,即

var personJoe = new Person { Name = "Joe", Age = 45 };
var personAlicia = new Person { Name = "Alicia", Age = 33 };
context.People.Add(personJoe, personAlicia);

这样,当我需要对另一个与 person 有关系的实体进行赋值时,我可以访问 person 变量。

我的问题是,执行此重构的最简单方法是什么?我知道我可以复制/粘贴,但我拥有的块大约有 200 行长,我发现自己经常需要这种类型的重构。如果可能的话,我想避免付费解决方案(ReSharper),但如果这是使这个过程自动化的唯一方法,我会认真考虑。

【问题讨论】:

  • 问题是什么?
  • 更新了问题以更明确地说明我的要求。
  • context是EntityFramework中的DbContext吗?
  • 这是在我的特定上下文中,但这并不重要。我将更改问题以删除实体框架相关代码。
  • 我问是因为,如果您可以更改 Add 实现以返回添加的实体,这可能会有所帮助,所以var people = context.People.Add(..., ...);

标签: c# visual-studio resharper coderush


【解决方案1】:

在我看来,这只是一个 Introduce Variable 重构。 Visual Studio 没有内置这种重构;但其他附加组件可能会这样做。如果您不想要付费解决方案,则重构包括复制/粘贴,然后添加变量并使用它。

要在 Resharper 中执行此操作(使用 Visual Studio 键盘方案),只需选择实例化 Person 的位置(例如 new Person { Name = "Alicia", Age = 33 }),然后按 Ctrl+R,V。

【讨论】:

【解决方案2】:

我刚刚写了这个 CodeRush 插件。 (大约需要 20-30 分钟 :))我认为它可以满足您的需求。

如果你安装了 CodeRush,你可以Download it here

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
  • 2022-11-24
  • 2021-04-27
相关资源
最近更新 更多