数年前、Eric Lippertは、実行時ではなくコンパイル時にメソッド/プロパティ情報を取得できる架空の infoof 演算子についてブログを書きました。基本的には素敵なポニーだと言っていますが、ユニコーンではありません....
コンパイル時にコードを書き換える Rosyln の機能について少し読みましたが、Roslyn を使用して infoof を実装するのはどれほど難しいでしょうか?
編集:これは、エリックが考えていたことをすべて取得する方法かもしれないと思いましたが、そうでない場合に備えて、機能を少し分解する必要がありました.
- プロパティ名を取得します。
- プロパティ タイプを取得します。
- プロパティ アクセサーを取得します。
- メソッド名を取得します。
- infoof で彼が意味するすべてを取得します...
リファクタリングに安全な方法で、コンパイル時に検証されます。個人的には、1 は実際に使用するものの約 90% をカバーします (呼び出し元の名前を取得するための新しい呼び出し元情報属性は、実際には約 60% をカバーできますが、もちろん、メソッドの内部と外部の両方で機能する方法があった場合) 、それが望ましいでしょう)。