0

メソッドのエントリをログに記録したい。エントリ ログには、メソッドによって受け取られた入力\パラメータがあります。これは、何千ものメソッドに対して行う必要があります。

メソッド呼び出しの前に発生したため、C# ATTRIBUTES を使用して入力パラメーターのこのログを作成することを考えました。(MVC の ActionFilters に似たもの)

属性を介してメソッドパラメーターを読み取ることは可能ですか?

4

2 に答える 2

1

あなたが探している概念は、アスペクト指向プログラミング (AOP) と呼ばれます。これは、アプリケーション コード全体でボイラープレート コードのブロックを「織り込む」ことができる手法です。ロギングはその完璧な例です。各メソッド呼び出しの前後に手動でロギングを実装するのは難しい方法です (これは、一方では大規模なプロジェクトでは実行できず、他方ではエラーが発生しやすくなります)。
または、これらの横断的な機能を 1 か所で定義し、アプリケーション コードに宣言的に適用できる AOP フレームワークを使用することもできます。これを実現するには、いくつかのアプローチがあります。1 つは、アプリケーション ロジックのビルド後に IL を作成し、コンパイル時にアスペクトを統合することです。これのよく知られた例はPostSharp です. スタートに適した無料版もあります。
ところで: PostSharp は属性に大きく依存しているため、正しい方向に進んでいます。
もう 1 つのオプションは、実行時にアスペクトを統合することです (キーワードは傍受です)。ほとんどの IoC フレームワークはこれを提供します。このアプローチは使いやすいですが、いくつかの欠点があります (実行時のパフォーマンスが低下し、仮想メソッドのみをインターセプトできます)。

于 2013-10-29T19:30:34.763 に答える