コードの一部がDスタイルのミックスインを使用して生成されるC#プログラムがあります(つまり、メソッドの本体がコンパイルされ、実行され、結果がクラスに挿入されます)。メソッドはでマークされて[MixinAttribute]
おり、当然、プログラムにコンパイルされたくありません。この属性で装飾されたメソッドがビルドに含まれないようにする安価な方法はありますか?
1 に答える
2
唯一の方法は、コンパイラの条件を使用することです。
#if DEBUG
[MixinAttribute]
// method you don't want included
#endif
このアプローチの問題は、DEBUG が定義されていないビルドでは使用できないメンバーを作成することです。次に、すべての使用法を条件付きでマークする必要がありますが、これはあなたが望むものではないと思います。明確ではありませんが、あなたが本当に求めているのは、ビルド時、またはむしろ JIT 時 (ConditionalAttribute
制御対象) に動的呼び出しサイトを作成する方法だと思います。この場合、ある種の動的ディスパッチ オーバーライド (プロキシ ライブラリを使用) を使用するか、PostSharp などの後処理ツールを使用してコンパイラ出力を操作しないと、C# でこれを簡単に行うことはできません。
于 2013-02-22T06:18:47.923 に答える