有没有办法以编程方式将类从一个名称空间移动到另一个名称空间?

Teo*_*tev 8 .net c# refactoring roslyn

我想以编程方式将类表单一个名称空间移动到另一个名称空间.这包括调整移动的类在其先前命名空间中具有的任何依赖关系.

我猜我可以以某种方式利用Roslyn项目,但我找不到起点.

编辑:

我正在尝试在C#代码上实现自动移动类重构.为研究目的而做 - 收集代码指标并研究重构过程之前和之后的变化.

我可以手工完成重构,但想知道我是否可以自动完成.这意味着我已经拥有了重构候选者和他们提议的移动位置.

Jas*_*ski 9

没有内置的支持,所以是的,你必须自己实现.

如果你没有想尝试这一点,有一些高层次的步骤,你可能会怎么做:

  1. 您首先调用SymbolFinder.FindReferences来确定提到您的类型名称的位置.
  2. 对于您找到引用的每个文档,使用SyntaxRewriter重写语法.
  3. 把新语法放在那里.
  4. 运行我们的简化程序以清理所有内容.

你可以通过我们的重命名代码来看看我们是如何做到这一点的,但我会警告你它相当复杂.这种重构在难度方面可能是"中等",所以不要劝阻你,但如果你把它作为你对Roslyn的第一次介绍,你就会有一场艰苦的战斗.

(座右铭:重构总是比你想象的更难.)