2017-01-31 14 views
2

クラスフォームを別の名前空間にプログラムで移動したいと思います。これには、移動したクラスが以前の名前空間にあった依存関係を調整することが含まれます。ある名前空間から別の名前空間にクラスをプログラムで移動する方法はありますか?

私はRoslynプロジェクトを何らかの形で利用できると思っていますが、出発点を見つけることはできません。

編集:

私はC#のコードの自動移動クラスのリファクタリングを実装しようとしています。調査の目的で行う - コードメトリクスを収集し、リファクタリングプロセス前後の変更を調べる。

私はリファクタリングを手で行うことができますが、私は自動的にそれを行うことができますか?つまり、私は既にリファクタリング候補者と提案されている移動場所を持っています。

+0

これは、[XYの問題]のように聞こえます(http://meta.stackexchange.com/questions/66377/what-is-the- xy-問題)。なぜあなたはこれをやろうとしていますか? –

+0

私は主な質問に説明を入れました。 –

+0

関連:[ReSharperで名前空間を更新する最速の方法](http://stackoverflow.com/questions/791253/fastest-way-to-update-namespaces-with-resharper)これは、OPとは対照的に、独自の実装を作成することに関心のないユーザー**にとって有益です。 –

答えて

1

これは組み込みサポートがないため、これを自分で実装する必要があります。

あなたははこれを試してみたかった場合は、いくつかの高レベルのステップは、あなたがおそらくやると思いますがあります:

  1. あなたはあなたのタイプの名前が言及されている場所を把握するために最初の通話SymbolFinder.FindReferencesを思います。
  2. 参照先の各ドキュメントについては、SyntaxRewriterを使用して構文を書き換えてください。
  3. 新しい構文をそこに置きます。
  4. 簡易化プロセスを実行して、すべてのバックアップをクリーンアップします。

私たちの名前変更コードを掘り下げて見ることができますが、私はそれがかなり複雑であることを警告します。このリファクタリングはおそらく難易度が「中程度」であるため、あなたを説得することはできませんが、Roslynへの最初の紹介として試してみると、あなたはうまくいっていません。

(モットー:リファクタリングはいつもあなたは彼らがいると思うよりも難しいです。)

+0

ありがとうございます!私は推奨されるアプローチを試みます。 –

関連する問題