条件付きメソッドを割り当てる方法や、C#で実行時にプリプロセッサディレクティブを追加する方法はありますか?
-
03-07-2019 - |
質問
目的は、実稼働ビルドのデータベースから実行時にデバッグ呼び出しをオンに切り替えることです...
解決
いいえ。条件付きメソッドとプリプロセッサディレクティブのポイントは、コンパイラが最終的な実行可能ファイルからコードを省略させることです。これらに相当するランタイムは、 if
ステートメントです。
ただし、アスペクト指向プログラミングは、他の方法では存在しない実行中のプログラムにコードを注入できるという点で、お望みのものとほぼ同等です。
編集: Joeが述べたように、これを行う方法は、log4netのようなロギングフレームワークに対してプログラムすることです。これにより、ログに記録される内容をきめ細かく制御できます。
他のヒント
プリプロセッサレベルではありません。結局のところ、あなたはそのプロセスの結果を実行しています。もちろん、プリプロセッサチェックを通常のコードチェックに変更することもできます。これは明らかに必要に応じて切り替えることができます。
いいえ。ただし、ほとんどのロギングサブシステムはこの機能を提供します。例えば。 log4netを使用すると、ログレベルを動的に変更できます。また、System.Diagnostics.Traceを使用している場合は、 TraceSwitch レベルを動的に。
明らかに(#ifステートメントのように)バイナリコード自体に影響を与えることはできません。
通常行うことは、コードに大量のログが含まれていることを確認することです。ログは、トレーススイッチ。そうすれば、ロギングをほとんどまたはまったく行わずにシステムを実稼働で実行でき、問題を調査したい場合は、構成ファイルを変更してロギングを切り替えることができます。