如何在C#中通过Mono.Cecil v0.9.5重命名方法中的变量

时间:2014-02-19 21:49:41

标签: c# mono.cecil

我想重命名方法中定义的变量。

假设我的方法是:

public void PrintWelcome() {
    StringBuilder myMessageBuilder = new StringBuilder();
    int linesCount = 10;
    for (int i = 0; i < linesCount; i++) {
        myMessageBuilder.Append(Console.ReadLine());
        myMessageBuilder.Append(Environment.NewLine);
    }

    Console.Write(myMessageBuilder.ToString());
}

然后在Mono.Cecil v 0.9.5的另一个项目中,打开我的程序集然后 我想通过以下代码重命名myMessageBuilderlinesCount

foreach (MethodDefinition methodDef in typeDef.Methods) {
    if (methodDef.HasBody) {
        foreach (var variableDef in methodDef.Body.Variables) {
            variableDef.Name = GetRandomName();
        }                                    
    }

但我的变量名称没有变化,当我打印variableDef.Name时,它打印" "

有人可以帮我重命名我的方法变量吗?

1 个答案:

答案 0 :(得分:1)

变量在编译后没有名称。像这样的信息存储在pdb文件中,而不是程序集本身。