Assembly Converter bases”改为中文,“汇编转换器基础”,技术性是使用CIL转换器将汇编代码转换为CIL代码,代码示例如下:
using System;
using System.Reflection;
using System.Reflection.Emit;
class Program
{
static void Main()
{
Assembly asm = Assembly.LoadFile(@"C:\Path\To\Assembly.dll");
Type type = asm.GetType("Namespace.ClassName");
MethodBase method = type.GetMethod("MethodName");
ILGenerator il = ((MethodBuilder)method).GetILGenerator();
il.Emit(OpCodes.Ldstr, "Hello, world!");
il.Emit(OpCodes.Call, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) }));
il.Emit(OpCodes.Ret);
asm.Save(@"C:\Path\To\AssemblyNew.dll");
}
}
这段代码加载C:\Path\To\Assembly.dll文件,获取类型Namespace.ClassName中的方法MethodName,然后使用ILGenerator生成CIL代码,将字符串“Hello, world!”传给Console.WriteLine方法进行输出,最后将修改后的程序集保存到C:\Path\To\AssemblyNew.dll文件中。