使用方法在编译时创建常量

时间:2012-06-15 22:00:06

标签: c# .net-4.0 compilation

我有一堆字符串依赖于静态字典和彼此,但永远不会被用户代码修改。如下所示:

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 + "(";
  //...
}

现在,每次程序执行时都必须执行所有这些方法(即使只执行一次)。

将这些方法执行转移到编译器的最佳方法是什么,将实际可执行文件保留为预期的常量?更好的是,是否可以将其扩展到字典本身 - 通过在编译时读取文件来构建字典?

如果我可以生成代码并同时编译它,我很乐意用代码生成来做这件事。

1 个答案:

答案 0 :(得分:6)

  

如果我可以生成代码并同时编译它,我很乐意用代码生成来做这件事。

您可以通过T4模板执行此操作。有关详细信息,请参阅Code Generation and T4 Templates