2012-06-15 28 views
2

我有一堆依賴於靜態字典和對方的字符串,但從不修改用戶代碼。喜歡的東西如下:(哪怕只有一次) 使用方法在編譯時創建常量

public static RegexDicts 
{ 
    public static readonly Dictionary<string, string> dict = new Dictionary<string, string>{ 
    {"One", "1"}, 
    //And so on 
    } 
} 

public static class RegexStrings 
{ 
    public static readonly string String1 = String.Join("|", RegexDicts.dict.Keys); 
    public static readonly string String2 = "Hi! (" + String1 + "("; 
    //... 
} 

眼下,所有的這些方法,必須每次在程序執行中執行

什麼是這些方法執行轉向的最佳方式編譯器,離開實際的可執行文件與預期的常量?更妙的是,是否有可能將其擴展到該字典本身 - 通過在編譯時讀取文件來構建字典?

如果我可以生成代碼並同時進行編譯,我很樂意在代碼生成中做到這一點。

回答

6

如果我可以生成代碼並同時進行編譯,我很友好地使用代碼生成。

你可以通過T4模板做到這一點。有關詳情,請參閱Code Generation and T4 Templates

+1

這不會解決編譯問題。 –

+1

@marceln T4模板將在編譯時發生 - 它可以在編譯階段之前創建實際的const值。這種基於模板的生成是T4設計的。 –

相關問題