5

数年前、Eric Lippertは、実行時ではなくコンパイル時にメソッド/プロパティ情報を取得できる架空の infoof 演算子についてブログを書きました。基本的には素敵なポニーだと言っていますが、ユニコーンではありません....

コンパイル時にコードを書き換える Rosyln の機能について少し読みましたが、Roslyn を使用して infoof を実装するのはどれほど難しいでしょうか?

編集:これは、エリックが考えていたことをすべて取得する方法かもしれないと思いましたが、そうでない場合に備えて、機能を少し分解する必要がありました.

  1. プロパティ名を取得します。
  2. プロパティ タイプを取得します。
  3. プロパティ アクセサーを取得します。
  4. メソッド名を取得します。
  5. infoof で彼が意味するすべてを取得します...

リファクタリングに安全な方法で、コンパイル時に検証されます。個人的には、1 は実際に使用するものの約 90% をカバーします (呼び出し元の名前を取得するための新しい呼び出し元情報属性は、実際には約 60% をカバーできますが、もちろん、メソッドの内部と外部の両方で機能する方法があった場合) 、それが望ましいでしょう)。

4

1 に答える 1

5

Roslyn を使用すると、ある有効な C# コードを別の有効な C# コードに簡単に書き換えることができます。ただし、言語に拡張機能を追加するためのものではありません。

Roslyn無効なコードも解析します (不完全な行で IntelliSense に使用したい場合はそうする必要があります) が、無効であるため、正しく実行される保証はありません (正確に何が「正しく」行われるかが明確でないため)平均)。また、使用する構造はinfoofあまり便利ではないと思います。

要約すると、これは Roslyn の使用目的ではなく、おそらく悪い考えです。しかし、Roslyn を使用してこれを行うことは不可能ではないと思います。

于 2012-06-29T05:32:43.133 に答える