Условное сборник на основе версии библиотеки классов в C#C#

Место общения программистов C#
Ответить
Anonymous
 Условное сборник на основе версии библиотеки классов в C#

Сообщение Anonymous »

В Classic C у меня может быть библиотека в версии 1.0, которая определяет константу в его .h < /code> файл, как: < /p>

Код: Выделить всё

 #define LIBRARY_API_VERSION_1_0
< /code>

И я могу делать такие вещи в коде моего приложения: < /p>

#include "LibraryApi.h"
// ...
int success;
#ifdef LIBRARY_API_VERSION_1_0
int param = 42;
success = UseThisMethodSignature(42);
#endif
#ifdef LIBRARY_API_VERSION_2_0
float param = 42.0f;
success = UseOtherMethodSignature(param);
#endif
< /code>

Теперь я работаю в C#. Таким образом, по -видимому, #define 
s только померяются только для файла, в котором они определены, поэтому я посмотрел на решение, описанное здесь, с использованием статического класса с константами. Но это решение требует, чтобы проверка произошла во время выполнения < /em>, которая вводит ряд проблем: < /p>


Потенциально неэффективно , если я запускаю один и тот же код снова и снова, проверяю дополнительную условную (хотя, если это const , возможно, компилятор или .NET. /> Вы не можете делать вещи, которые бросили ошибки компилятора. В моем вышеприведенном примере я дважды определил Param с двумя разными типами. Также используйте OtherMethodSignature , возможно, не существует в качестве функции, которая не будет компилироваться, если оба блока будут разделены только если /else< /code>. < /li>
< /ul>

Итак, каково принятое решение для этого типа проблемы? Мой сценарий состоит в том, что у меня есть несколько версий API веб -службы (с различными степенями различий в зависимости от того, что вы с ним делаете), и я хочу иметь возможность компилировать ни без комментирования/не покидая кучу кода или какого -либо другого Не менее глупый ручной процесс. < /p>

edit < /h2>

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

Подробнее здесь: https://stackoverflow.com/questions/227 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»