2008-11-24 74 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