2

プロジェクトのビルド前のステップとして多数の C# ファイルを前処理し、メソッドの開始を検出し、既存のコードの前にメソッドの開始時に生成されたコードを挿入する機能が必要です。ただし、メソッドの開始を検出するのに問題があります。最初は正規表現で照合しようとしましたが、あまりにも多くの誤検知が発生しました。

リフレクションを使用しますが、MethodInfo クラスは元のソースのポイントを参照しません。

編集:ここで私が実際にやろうとしているのは、メソッドの事前条件をサポートすることです。その事前条件コードは、メソッドの属性によって決定されます。私が最初に考えたのは、メソッドの先頭を探し、事前条件を処理するために生成されたコードを挿入できるということでした。

これを行うより良い方法はありますか?必要に応じて、Visual Studio アドインを作成することにオープンです。

これは .NET 2.0 プロジェクトです。

乾杯

4

2 に答える 2

3

PostSharp またはMono.Cecilを使用すると、コア ビジネスになる可能性が低い C# パーサーを作成することなく、生成されたコードを変更することで、これをきれいに行うことができます...

PostSharp で重要なことは何も行っていませんが、前提条件や AOP などを実装するには、Mono よりも適切であると推測できます。あるいは、 Ninjectのような DI コンテナーを使用して AOPy を実行できる場合があります。

しかし、もちろん、このアイデアの適用可能性は依存します-メソッドの開始時にコードを挿入したいということ以外はあまり言いませんでした...

編集:前提条件を実行したいというあなたの願望に照らして... .net 4のコードコントラクトは間違いなくその方向にあります。

どんな道具を持っていますか?Mono.Cecil.dll DLL を 1 つ出荷することの何が問題になっていますか? いずれにせよ、パーサー以外の何かが仕事のためのツールです。

于 2009-11-11T15:48:44.093 に答える
0

もっと簡単な方法があると思いますが、これはMGrammerを試してみる良い言い訳かもしれません。

于 2009-11-11T16:01:53.020 に答える