【问题标题】:C# precompile directive - use a variable to tell which code to compileC# 预编译指令 - 使用变量来告诉编译哪些代码
【发布时间】:2012-01-07 16:09:31
【问题描述】:

我在 C# 项目中使用 Web 服务。 我在网上和本地主机上测试了这个项目。 我有这样的代码:

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

例如,如果我想在线部署它,我取消前两行的注释,并注释最后两行。

但我还有更多的更改要做,而且我不喜欢评论和取消评论所有行。 如何使用处理指令来定义一个变量,例如:IsLocal,我只是将其设置为 true 以包含本地代码,或者设置为 false 以包含服务器代码? 我怎么能写出这样的东西?

【问题讨论】:

标签: c# c-preprocessor


【解决方案1】:

如果这是您正在处理的那种事情,我会推荐一种替代方法,可能是一些 IOC/DI,其中这两个类都实现了一个接口,并且您在 app.config/web 中进行配置。配置指向它的类型。

所以不是

var proxy = new ScheduleImageLocal.ScheduleImageProcessingClient();

你会这样做

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

或类似的东西,但是你的图书馆可以工作。

如果您使用 Unity,您可以将 IScheduleImagingProcessingClient 接口指向配置文件中的具体类型。

【讨论】:

    【解决方案2】:

    您可以使用项目属性来定义值或#define SOME_KEY 然后:

    #if KEY
    
        ... Code goes here
    
    #endif
    

    【讨论】:

      猜你喜欢
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      相关资源
      最近更新 更多