Это похоже на несколько других тем, которые я нашел, но я еще не нашел ответ, который мне нужен. Я был бы признателен за прямой ответ, даже если это «нет, вы не можете этого сделать».
Есть ли способ использовать один блок кода, если класс / тип существует, и другой, если его нет. Результат будет таким же, как при использовании директив препроцессора, но без необходимости #define и ручного комментирования или отмены комментариев в файле.
Это может быть особый вариант использования. Я не уверен. Я работаю в среде, где наборы файлов могут быть установлены или нет, прежде чем что-либо скомпилировано. Таким образом, кто-то может купить плагин, который будет «установлен» (файлы, добавленные в проект), который делает классы / типы доступными для использования (например, расширение API). Мне нужно предоставить обходной путь, если у кого-то нет ни одного из наших других пакетов плагинов. Я надеюсь, что в этом есть смысл.
Просто было бы неудобно просить кого-то открыть один из наших файлов, если у них есть другой плагин, чтобы откомментировать директиву препроцессора, если только нам не нужно.
например. Я знаю, что это не работает, потому что он проверяет логическое значение, только если используется #define, но это иллюстрирует то, что я пытаюсь сделать ...
#if SomeType
SomeType.DoSomething();
#else
DefaultWay.DoSomething();
РЕДАКТИРОВАТЬ: я добавил это как предложение функции C #. Пожалуйста, проголосуйте здесь:
http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2297494-add-type-testing-as-preprocessor-directive
Я не понимаю, как рефлексия могла бы сделать это, но я новичок в C #, поэтому примеры использования переизбрания, если это возможно, были бы хорошими.