SYSK 157: Conditional Methods
One of the less known features in .NET is conditional methods, which allow developers to create methods whose calls are included or excluded during compilations based on a preprocessing symbol.
Say, you want to execute a certain method only under certain conditions known at compilation time. In the “old days”, you’d use #if…#endif pre-processor definitions. In .NET, you can use the System.Diagnostic.ConditionalAttribute class to do the same:
private void Method1()
{
. . .
Method2();
. . .
}
// NOTE: Make sure to define MYCONDITION conditional compilation symbol in
// project properties -> build tab
[System.Diagnostics.Conditional(“MYCONDITION”)]
private void Method2()
{
. . .
}
In effect, of MYCONDITION is not defined, Method2 call is a no-op. Most commonly used condition is DEBUG…
BEWARE: One would wish that the following would be allowed:
[System.Diagnostics.Conditional(“DEBUG”)]
private void Method2()
{
// TODO: add debug version specific code
}
[System.Diagnostics.Conditional(“RELEASE”)]
private void Method2()
{
// TODO: add release version code
}
But, it will not compile. It’s unfortunate, especially since the following compiles without any problems:
#if DEBUG
private void Method2()
{
// TODO: add debug version code
}
#else
private void Method2()
{
// TODO: add release version code
}
#endif
Well, may be in .NET 3.0?