Доступ к константам компилятора в коде - PullRequest
2 голосов
/ 11 января 2011

Можно ли использовать константу, определенную компилятором, в коде, как показано ниже?

#If DEALER_DEBUG = "ID12345" Then
        If(Dealer.ID = DEALER_DEBUG) Then
        'Do something
        End If
#End If

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

Исходный кодскомпилированная библиотека будет выглядеть так:

        If(Dealer.ID = "ID12345") Then
        'Do something
        End If

Ответы [ 2 ]

4 голосов
/ 11 января 2011

Нет.Директивы компилятора - это просто директивы компилятору.Они не включены в сгенерированный код IL и поэтому недоступны во время выполнения.

0 голосов
/ 11 января 2011

Вы можете использовать его во время компиляции #If, но вы не можете использовать его во время выполнения. Если

Вы можете определить свои пользовательские константы компилятора в свойствах проекта в Компиляция-> Дополнительные параметры компиляции-> Пользовательские константы или поочередно с помощью директивы #Const.

Есть много лучших способов сделать это. Я не знаю много о том, что именно вы пытаетесь достичь, но вы можете рассмотреть какой-то фабричный шаблон + плагины + конфиг, который позволяет вам предоставить сборку плагинов для этого клиента, что может позволить дополнительную функциональность.

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

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