Директива прекомпиляции C # - используйте переменную, чтобы указать, какой код компилировать - PullRequest
0 голосов
/ 07 января 2012

Я использую веб-сервис в проекте C #.Я тестирую проект как онлайн, так и на localhost.У меня есть такой код:

 //var proxy = new PanoNestWebsite.ScheduleImagePanonest.ScheduleImageProcessingClient();
 //var s = new ScheduleImagePanonest.ScheduleImageProcessing();
 var proxy = new ScheduleImageLocal.ScheduleImageProcessingClient();
 var s = new ScheduleImageLocal.ScheduleImageProcessing();

Например, если я хочу развернуть его онлайн, я раскомментирую первые две строки и комментирую последние две.сделать, и я не люблю комментировать и раскомментировать все строки.Как я могу использовать директивы препроцессора для определения такой переменной, как: IsLocal, и я просто установил значение true, чтобы включить локальный код, или false, чтобы включить код сервера?Как я могу написать что-то вроде этого?

Ответы [ 2 ]

3 голосов
/ 07 января 2012

Если вы имеете дело с такими вещами, я бы порекомендовал альтернативный подход, возможно, какой-нибудь IOC / DI, где оба эти класса реализуют интерфейс, и вы настраиваете его в своем app.config / web.config, какой тип указывает на него.

Так что вместо

var proxy = new ScheduleImageLocal.ScheduleImageProcessingClient();

вы бы вместо этого сделали

var proxy = IoCFactory.Resolve<IScheduleImagingProcessingClient>();

или что-то в этом роде, однако ваша библиотека работает.

Если вы используете Unity, вы должны указать интерфейс IScheduleImagingProcessingClient на конкретный тип в вашем конфигурационном файле.

1 голос
/ 07 января 2012

Вы можете использовать свойства проекта для определения значений или #define SOME_KEY затем:

#if KEY

    ... Code goes here

#endif
...