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

Ari*_*iac 2 c# compilation .net-4.0

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

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 + "(";
  //...
}
Run Code Online (Sandbox Code Playgroud)

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

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

如果我可以生成代码并同时编译它,我很友好能够通过代码生成来实现这一点.

Ree*_*sey 6

如果我可以生成代码并同时编译它,我很友好能够通过代码生成来实现这一点.

您可以通过T4模板执行此操作.有关详细信息,请参阅代码生成和T4模板.