我可以通过C#/ Visual Studio中的预编译器指令检测网络连接吗?例如#if ConnectedToNetwork

时间:2011-06-09 14:34:42

标签: c# visual-studio visual-studio-2010 c-preprocessor

我在编码/测试时并不总是有网络连接,因为我在旅行时编码(火车,航班等)。我想设置一个预编译器条件,以便在未检测到连接时跳过某些代码。当然我可以处理错误,但我不希望这种逻辑作为代码库的一部分。有没有办法做到这一点?也许与Macros一起?

示例:

#if ConnectedToNetwork
    PerformFunctionThatRequiresNetwork();
#else
    DoSomethingElseThatDoentRequireNetwork();
#endif

2 个答案:

答案 0 :(得分:2)

你知道什么时候没有网络吗?如果是这样,为什么不设置一个具有“无网络”设置的新构建定义,并在调试你知道没有网络的地方使用它?我认为这将是一个开发问题,而不是创建一个程序化的预编译步骤。

至于“我必须在预编译中执行此操作”,我将分离出调用网络并编译“非网络”版本的代码。在调试的编译步骤中可以很容易地交换它并解决问题。

另一个问题是这是否在运行时更好。用户是否还在没有网络时关闭网络位,或者您只是通过例外处理这种可能性?

答案 1 :(得分:0)

我不这么认为...... 最接近你想要的是一种即时交换文件的插件,但我认为这些东西不存在。

我认为最好的方法是通过代理类来处理它。这是为您需要联网/非联网的功能创建一个接口,并实现两个不同的类。然后根据配置或检测网络加载适当的处理程序类。

HTH

马里奥