访问代码中的编译器常量

时间:2011-01-11 17:09:45

标签: 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.ID = "ID12345") Then
        'Do something
        End If

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

您可以在编译时#If中使用它,但是您不能在运行时使用它如果

您可以在Compile->Advanced Compile Options->Custom Constants下的项目属性中定义自定义编译器常量,也可以使用#Const指令定义。
有很多更好的方法可以做到这一点。我不太清楚你究竟想要完成什么,但你可能想要考虑某种工厂模式+插件+配置,它允许你为该客户端提供一个插件组件,它可以提供额外的功能。

创建一个可扩展的应用程序可以说有很多工作要做,但是如果你发现自己需要做这些事情,那么从一开始就把它写成可扩展的东西要好得多。以后回来重构