Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 访问代码中的编译器常量_Vb.net_Compiler Construction - Fatal编程技术网

Vb.net 访问代码中的编译器常量

Vb.net 访问代码中的编译器常量,vb.net,compiler-construction,Vb.net,Compiler Construction,可以在下面的代码中使用编译器定义的常量吗 #If DEALER_DEBUG = "ID12345" Then If(Dealer.ID = DEALER_DEBUG) Then 'Do something End If #End If 我正在运行批处理,我的一个客户的数据出现问题。我只想为该客户添加特殊代码,但我想将代码保留在那里,以便将来需要调试其他客户时可以轻松切换客户ID 编译后的dll的源代码如下所示: If(Dealer

可以在下面的代码中使用编译器定义的常量吗

#If DEALER_DEBUG = "ID12345" Then
        If(Dealer.ID = DEALER_DEBUG) Then
        'Do something
        End If
#End If
我正在运行批处理,我的一个客户的数据出现问题。我只想为该客户添加特殊代码,但我想将代码保留在那里,以便将来需要调试其他客户时可以轻松切换客户ID

编译后的dll的源代码如下所示:

        If(Dealer.ID = "ID12345") Then
        'Do something
        End If

不。编译器指令就是,对编译器的指令。它们不包含在生成的IL代码中,因此无法在运行时访问。

您可以在编译时使用它#If,但如果

您可以在下的项目属性中定义自定义编译器常量,也可以使用#Const指令来定义自定义编译器常量。

有很多更好的方法可以做到这一点。我不太清楚你到底想完成什么,但是你可能想考虑某种工厂模式+插件+配置,允许你为那个客户提供一个插件程序集,它允许额外的功能。br>
创建一个可扩展的应用程序可能需要做更多的工作,但是如果你发现自己需要做这些事情,那么最好从一开始就编写一个可扩展的应用程序,而不是以后再回去重构。

>/p>当然,它们不是作为变量生成的,但我想他是问你是否可以用C++作为一个预处理器替换,就像C++的定义一样。在上面的问题中,生成的if语句实际上将编译为“if(Dealer.ID=“ID12345”),然后…”。如果没有这些恶作剧的代码,VB语法已经够难看的了:)