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

时间:2017-01-31 09:42:01

标签: c# .net refactoring roslyn

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

我猜测我可以以某种方式使用Roslyn项目,但我无法找到起点。

修改

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

我可以手工完成重构,但想知道我是否可以自动完成。这意味着我已经拥有了重构候选人及其提议的移动地点。

1 个答案:

答案 0 :(得分:9)

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

如果您 希望尝试此操作,那么您可能会执行一些高级步骤:

  1. 您首先调用SymbolFinder.FindReferences来确定提到您的类型名称的位置。
  2. 对于您找到引用的每个文档,请使用SyntaxRewriter重写语法。
  3. 将新语法放在那里。
  4. 运行我们的简化程序以清理所有内容。
  5. 你可以通过我们的重命名代码来看看我们是如何做到的,但我会警告你它相当复杂。这种重构在困难方面可能是“中等”,所以不要劝阻你,但如果你把它作为你对罗斯林的第一次介绍,那么你就会遇到一场艰苦的战斗。

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