如何使用 Mono Cecil 更改字段值?

问题描述

我有一个 C# 程序,它有一个类:

public class Test
{
    internal const string a = "some value";
    private DateTime b = new DateTime();
}

如何使用 Mono Cecil 更改它们的初始值,使其看起来像这样:

public class Test
{
    internal const string a = "test";
    private DateTime b = DateTime.MaxValue;
}

现在我只有以下骨架代码,我不知道如何修改字段。

void Main()
{
    var input = @"C:\my_projects\a.exe";
    var asm = AssemblyDefinition.ReadAssembly(input);
    foreach (ModuleDefinition module in asm.Modules)
    {
        foreach (TypeDefinition type in module.GetTypes())
        {

            foreach (var field in type.Fields)
            {
                if (field.Name == "a")
                {

                }

                else if (field.Name == "b")
                {

                }

            }
        }
    }
    asm.Write(@"c:\my_projects\b.exe");
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)