Зачем нужен атрибут [Conditional("DEBUG")]?

266
03 января 2022, 09:30

Есть такой код но я не могу понять зачем тут нужен я гуглил и так и не понял что делает: [Conditional("DEBUG")] ,ссылка от куда я брал код https://docs.microsoft.com/ru-ru/archive/msdn-magazine/2009/february/patterns-wpf-apps-with-the-model-view-viewmodel-design-pattern.

[Conditional("DEBUG")]
[DebuggerStepThrough]
public void VerifyPropertyName(string propertyName)
{
    // Убедитесь, что имя свойства соответствует реальному,
    // public, свойство instance для этого объекта.
    if (TypeDescriptor.GetProperties(this)[propertyName] == null)
    {
        string msg = "Invalid property name: " + propertyName;
        if (ThrowOnInvalidPropertyName)
            throw new Exception(msg);
        else
            Debug.Fail(msg);
    }
}
Answer 1

Документацию по атрибуту можно найти здесь.

Назначение атрибута — вставлять отладочный код в программу, например, код дополнительного логгирования. Метод, помеченный таким атрибутом, может выводить окно с отладочной информацией или добавлять какие-то поля в HTTP-заголовки.

Метод будет вызываться только в том случае, если вы при сборке проекта определили макрос, который указан в параметре. В отладочной версии приложения всегда определён макрос DEBUG:

#define DEBUG

Поэтому в отладочной версии этот метод вызывается. В релизе макроса нет, поэтому метод будет полностью удалён из сборки вместе с теми местами, где он вызывается.

Естественно, на этом методе не должно быть построено никакой логики, он должен быть void.

В подавляющем большинстве случаев метод используется именно с макросом DEBUG, но вы можете определять свои макросы.

READ ALSO
C# вывод элементов из публичного класса в ListBox

C# вывод элементов из публичного класса в ListBox

Дорогие друзья! Сразу прошу прощения за мою неопытностьИмею две формы, в которых есть ListBox

97
LINQ groupby отсортировать в группе

LINQ groupby отсортировать в группе

Нужно сгруппировать все паллеты по сроку годности, отсортировать по возрастанию срока годности, в каждой группе отсортировать паллеты по весу

159
Что отвечает за анимацию Item в Terraria?

Что отвечает за анимацию Item в Terraria?

создал новый предмет и в SetDefaults закинул строчку:

149
Обратный метод к Camera.ScreenToWorldPoint()

Обратный метод к Camera.ScreenToWorldPoint()

В движок Unity встроен метод ScreenToWorldPoint(), который координаты точки на экране конвертирует в координаты соответствующей точки на карте(сцене/мире)Есть...

99