Conditional
Conditional ставят на
void-метод без
возвращаемого значения.
Символ ABCDE в примере
не задают - вызов исчезает при
компиляции, флаг остаётся
false.
Синтаксис
[Conditional("ABCDE")]
static void Mark()
{
}
Пример
Давайте вызвать условный метод
без символа ABCDE:
using System;
using System.Diagnostics;
class Program
{
static bool touched;
[Conditional("ABCDE")]
static void Mark()
{
touched = true;
}
static void Main()
{
Mark();
bool res = touched;
Console.WriteLine(res);
}
}
Результат выполнения кода:
False
Пример
Давайте прочитать имя символа из атрибута:
using System;
using System.Diagnostics;
using System.Reflection;
class Program
{
[Conditional("ABCDE")]
static void Mark()
{
}
static void Main()
{
MethodInfo method = typeof(Program).GetMethod(
"Mark",
BindingFlags.Static | BindingFlags.NonPublic);
ConditionalAttribute item = method
.GetCustomAttribute<ConditionalAttribute>();
string res = item.ConditionString;
Console.WriteLine(res);
}
}
Результат выполнения кода:
"ABCDE"
Пример
Давайте проверить, что метод
помечен Conditional:
using System;
using System.Diagnostics;
using System.Reflection;
class Program
{
[Conditional("ABCDE")]
static void Mark()
{
}
static void Main()
{
MethodInfo method = typeof(Program).GetMethod(
"Mark",
BindingFlags.Static | BindingFlags.NonPublic);
bool res = method.IsDefined(typeof(ConditionalAttribute), false);
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
Obsolete,
предупреждение компилятора -
Experimental,
опытное API -
ModuleInitializer,
старт модуля -
Атрибут,
обзор