Есть ли условный атрибут на уровне класса?

Я хочу использовать условный атрибут для класса, или более того, есть ли что-то, что дает этот эффект? В принципе, я не хочу, чтобы класс находился в режиме отладки. Я также не хочу, чтобы обернуть каждый вызов в директиве #if DEBUG.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace NameSpace
{
    [Conditional("Debug")]
    public class ClassName
    {

        public ClassName()
        {
        }
    }
}

Ответ 1

Нет, нет. Условные атрибуты не приводят к тому, что их цели исчезают сами собой - они просто заставляют компилятор пропускать пользователей целей.

Сегодня у Эрика Липперта была публикация только такого рода. Прочтите его и посмотрите, все ли имеет для вас смысл.

Если вам действительно нужно опустить сам класс в режиме выпуска, используйте директивы препроцессора - но вам придется делать то же самое и для всех вызывающих. Какой вред он должен поддерживать класс в режиме выпуска?

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

Ответ 2

Не уверен, если я правильно понимаю это.

Но, если вы украшаете все методы с помощью ConditionalAttribute - все это будет удалено, если символ отсутствует. И, следовательно, хотя класс доступен для использования, во время выполнения не будет никаких методов для его использования.

Я не уверен, почему вы хотели бы исключить класс в зависимости от символа? Не могли бы вы объяснить сценарий?