Есть ли условный атрибут на уровне класса? - PullRequest
11 голосов
/ 11 сентября 2009

Я хочу использовать условный атрибут в классе или, более точно, есть что-то, что дает этот эффект? По сути, я не хочу, чтобы класс находился там в режиме отладки. Я также не хочу заключать каждый вызов в директиву #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()
        {
        }
    }
}

Ответы [ 2 ]

11 голосов
/ 11 сентября 2009

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

У Эрика Липперта было сообщение о таких вещах сегодня, как это происходит. Прочтите его и посмотрите, имеет ли это смысл для вас.

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

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

0 голосов
/ 11 сентября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...