2008-11-24 40 views
6

有没有类似的条件不存在的属性,或者可能的方式来使用条件属性只包含一个方法,如果该符号是而不是定义?是否存在System.Diagnostics.ConditionalAttribute的逆?

我要找的是什么,是这样的:

[Conditional("!SILVERLIGHT")] 
private void DoStuffThatSilverlightCant() {...} 

这样,如果符号SILVERLIGHT确实存在该方法将不包括在内。

我不想使用简单#ifdef的原因是,我可以利用编译器删除调用语句,而不必将每个单独的呼叫都包装在#ifdef中。

+0

正如我在写这个问题时,我想到,如果它确实存在,它实际上不会对我正在尝试做的事有帮助。但是,无论如何,这似乎是一个很好的问题。 – MojoFilter 2008-11-24 21:58:44

回答

8

更新: 以下代码片段仅适用于#if在每个调用文件中都不太实用的情况。

#if !SILVERLIGHT 
#define NOT_SILVERLIGHT 
#endif 

[Conditional("NOT_SILVERLIGHT")] 
private void DoStuffThatSilverlightCant() {...} 

什么可以做然而,就是对任何平台使用的是这种意志/定义所需的符号(在这种情况下NOT_SILVERLIGHT)构建配置。

+0

这只会在您声明方法的文件中起作用。这不是一个全球性的解决方案 – JaredPar 2008-11-24 22:03:34