我继承了使用DynamicMethod在运行时生成方法的代码。我还需要修改正在生成的一些代码。
由于我是MSIL的n00b,我希望能够在Reflector中加载生成的代码,并确保代码能做我祈祷它做的事情;)
只是,我不知道如何将“匿名托管的DynamicMethods程序集”序列化到磁盘上。这个是可能的吗?如果是这样的话,是怎么做的?
发布于 2011-06-15 06:25:23
我认为如果你想在Reflector或dotPeek中加载方法,你需要创建一个实际的程序集。为此,请使用use MethodBuilder而不是DynamicMethod。它们的大部分用法应该是相同的。
发布于 2011-07-06 17:17:00
尝尝这个,
var assemblyName = new AssemblyName("SomeName");
var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave, @"c:");
var moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, assemblyName.Name + ".dll");
TypeBuilder builder = moduleBuilder.DefineType("Test", TypeAttributes.Public);
var methodBuilder = builder.DefineMethod("DynamicCreate", MethodAttributes.Public, typeof(T), new[] { typeof(IDataRecord) });
/* this line is a replacement for your new DynamicMethod(....) line of code
/* GENERATE YOUR IL CODE HERE */
var t = builder.CreateType();
assemblyBuilder.Save(assemblyName.Name + ".dll");https://stackoverflow.com/questions/6349332
复制相似问题