2014-10-17 43 views
3

有沒有辦法讓C#編譯器插入在編譯時自動遞增的常量值?C#編譯器可以在編譯時插入每個用法自動遞增的常量值嗎?

E.g.

MyFunc(NEXT_CONSTANT); 
MyFunc(NEXT_CONSTANT); 
MyFunc(NEXT_CONSTANT); 

會產生這樣的代碼:

MyFunc(1); 
    MyFunc(2); 
    MyFunc(3); 
+0

你不能用編譯本身做到這一點,但是你可以在編譯之前生成代碼。 – Peter 2014-10-17 08:28:10

+0

在編譯時?我不這麼認爲.. – 2014-10-17 08:29:01

回答

4

沒有,有沒有在做這個的語言。有一些糟糕的黑客可以讓你跟蹤調用者文件/行/成員,並根據它自動增加(如果你使用的是C#5) - 但它並不是真正的相同。

有一些基於工具的方法可以改變你的源代碼 - 但我會試着退後一步,看看你真正的需求和意圖(我們現在還不知道),並嘗試如果可以,請在範圍內找到解決方案

0

有這樣的一件事情 - 組裝版本的內部版本號。如果您將程序集版本設置爲1.2.*,最後兩個數字將隨每個版本而改變。您可以輕鬆地在代碼中讀取它 - 它不是一個常量,但是如果通過靜態屬性公開它,它可能工作得很好。

如果這還不夠,只需製作一個自定義構建目標即可。用一個固定的結構維護一個幾乎空的C#文件並不難,您可以在每次構建之前修改它。

相關問題