对条件属性使用编译器指令

Posted

技术标签:

【中文标题】对条件属性使用编译器指令【英文标题】:Using compiler directives for conditional attributes 【发布时间】:2013-01-17 14:53:21 【问题描述】:

我希望根据编译模式使属性成为条件。

例如这是MyFunction(),它用属性MyAttribute()装饰:

<MyAttribute()>  
Private Function MyFunction() As Boolean
....
End Function

但是我希望在 DEBUG 为真时应用该属性,这听起来是一个使用 compiler directives 的好地方:

#If Debug Then
<MyAttribute()>
#End If
Private Function MyFunction() As Boolean
....
End Function

然而,这似乎需要一个连续字符 (_),这反过来会影响 #End If(意外标记)。

我将如何实现我想要的?

【问题讨论】:

【参考方案1】:

最坏的情况,你可以这样做:

#If Debug Then
<MyAttribute()>
Private Function MyFunction() As Boolean
#Else
Private Function MyFunction() As Boolean
#End If

这可能是由于在预处理之前发生了行继续处理。例如,这是有效的:

#If 1 = _
  1 Then

#End If

在您的情况下,您希望在预处理后继续行。

【讨论】:

那么这是编译器的错误吗? @m.edmondson - 用我对您的评论的回答更新了我的回答 ;-)

以上是关于对条件属性使用编译器指令的主要内容,如果未能解决你的问题,请参考以下文章

XAML 是不是有用于调试模式的条件编译器指令?

条件编译及编译预处理阶段分析与总结--笔记

如何为 C# 生成自定义 StyleCop 规则 - 条件编译预处理器指令

jsp基础知识二(jsp编译指令)

自动删除 Delphi IFDEf 编译器指令

预处理器指令