2008年2月20日

ConditionalAttribute クラス

最近必要になったので。
虫を取り除く(Debug)には殺虫剤(デバッグ用のメソッド)が必要になる場合があるが、それが製品(Releace)にも含まれていたら大変である。 デバッグ用メソッドはDebugビルドの場合のみビルドされるようにしたい そこで、属性ConditionalAttributeを利用する。 この属性をデバッグ用メソッドに付け、conditionStringに文字列"DEBUG"を指定する。これによってこのメソッドはコンパイル定数DEBUGを定義してビルドした場合にのみ実行されるようになる。(Visual Studioの規定ではDebugビルド時にはコンパイル定数DEBUGが定義されている。)

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            ReleaseMethod();
            DebugMethod();
        }

        static void ReleaseMethod()
        {
            Console.WriteLine("おいしい餃子");
        }

        [System.Diagnostics.Conditional("DEBUG")]
        static void DebugMethod()
        {
            Console.WriteLine("殺虫剤 噴出中");
        }
    }
}
Debugでビルドした場合。
    おいしい餃子
    殺虫剤 噴出中
Releaceでビルドした場合。
    おいしい餃子

ただし、これで出来上がった製品は殺虫剤を噴出はしないが、隠し持っている状態になる。

0 件のコメント:

コメントを投稿