什么是在编译库中切换两个“使用”语句的好方法?

时间:2013-11-21 12:41:50

标签: c# soap late-binding

我正在将解决方案的各个部分划分为单独的解决方案,并将它们集成到Atlassian Bamboo构建/部署环境中。我有一个站点,一个带有Windows Workflow Foundation的WCF,以及一个包含所有共享类的库。全部都是用C#btw编写的。

库中的一件事是与Magento(基于php)SOAP接口连接的类。基本上它只是为我提供了Magento回吐给我的所有SOAP异常的处理程序。它使用SOAP异常作为有效但结果不好...示例“产品X不存在”。等

它可能是任何SOAP接口。肉和土豆:

我有一台开发和生产Magento机器,我有两个非常相同的肥皂接口.. www.mysite.com/soap/etc和dev.mysite.com/soap/etc由这两台机器公开。每个都作为Web引用加载到库中,并且很长一段时间我使用编译时#if DEBUG常量来在两个不同的“Using”语句之间切换。无论我选择调试还是发布,它都会选择正确的引用。这是代码:

#if DEBUG
    using NKI.Library.MagentoDev;
#else
    using NKI.Library.MagentoProd;
#endif

现在,我需要能够在将库编译成DLL后稍后指定这个“选择”..(顺便说一句,不要把我的情况写入硬编码到dll中:) / p>

1 个答案:

答案 0 :(得分:1)

预处理器显然是using的编译时指令。由于显而易见的原因,您无法在编译后更改using的作用。

也就是说,如果MagentoDevMagentoProd都来自同一个公共基类,那么没有什么可以阻止你有一个配置文件,其中读入了一个设置并且代码使用了适当的接口