2016-09-27 16 views
0

要麼我不理解預處理器指令,要麼他們不工作。將值分配給預處理器指令

我想爲多個框架編寫一個應用程序。 (DNX451,DNX46,NETSTANDARD1_5,...)

所以我一直有寫類似(真正簡單的例子,我知道我不需要在這裏)

public class Test 
{ 
#if !(NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0) 
    public int? testVar; 
#else 
    public int testVar; 
#endif 

    public string Method() 
    { 
#if !(NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0) 
     return (testVar ?? 0).ToString(); 
#else 
     return testVar.ToString(); 
#endif 
    } 
} 

那麼,有沒有可能性定義一個變量?在每個文件至少,這樣我就可以說,例如爲:

#define NetCore (NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0) 

所以我只需要編寫

public class Test 
{ 
#if !NetCore 
    public int? testVar; 
#else 
    public int testVar; 
#endif 
.... 

會少得多的代碼,我可以把它定義在我的文件上。或者這對預處理器的改變是不可能的?

+0

會增加一個條件到'.csproj'是你的選擇嗎? – Caramiriel

+0

@ Caramiriel嗯,如果真的沒有可能在代碼中定義它,將是一個選項。 –

回答

1

這似乎爲我工作(必須是在文件的頂部):

#if (NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0) 
#define NetCore 
#endif 
+1

噢,是的,現在...那簡單而合乎邏輯的解決方案。在編碼之前有時候需要休息一下:D謝謝!這完全是我尋找的。 –