for WPF developers
Home Profile Tips 全記事一覧

複数シンボルの条件

(2016/12/03 0:29:17 created.)

Conditional 属性はひとつのメソッドに対していくつも指定することができます。例えば次のようにした場合、A または B または C のシンボルがひとつでも定義されていた場合、DebugOutput() メソッドが有効となります。

Program.cs
  1. public class Sample
  2. {
  3.     [Conditional("A"), Conditional("B"), Conditional("C")]
  4.     public void DebugOutput()
  5.     {
  6.         Console.WriteLine("A or B or C が定義されているときのみ実行されます。");
  7.     }
  8. }

A と B が両方定義されていない限りコンパイルして欲しくないといった場合は、メソッドをわけて定義する必要があります。

Program.cs
  1. public class Sample
  2. {
  3.     [Conditional("A")]
  4.     public void DoIfA()
  5.     {
  6.         DoIfAandB();
  7.     }
  8.  
  9.     [Conditional("B")]
  10.     private void DoIfAandB()
  11.     {
  12.         Console.WriteLine("A and B が定義されているときのみ実行されます。");
  13.     }
  14. }