AttributeのConditionalを使ってみる

'ConditionalAttribute'を使うために"using System.Diagnostics;"を追加。

◎attri.txt

using System;
using System.Diagnostics;

class Program
{
[Conditional("TEST")]
    static void Method1()
    {
        Console.WriteLine("Method1");
    }

[Conditional("TRIV")]
    static void Method2()
    {
        Console.WriteLine("Method2");
    }

    static void Method3()
    {
        Console.WriteLine("Method3");
    }

    static void Main(string[] args)
    {
        Method1();
        Method2();
        Method3();
    }
}

 

シンボルは定義しないで普通にコンパイルして実行するとMethod3だけが実行される。

PS >.\attri.exe
Method3

 

シンボル定義をしてコンパイルし、実行するとConditional付きメソッドも実行される。

 

PS >csc .\attri.txt /define:TEST,TRIV

 

PS >.\attri.exe
Method1
Method2
Method3

 

※シンボルはカンマ区切りで複数指定できるようだ。