首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将DynamicMethod保存到磁盘

将DynamicMethod保存到磁盘
EN

Stack Overflow用户
提问于 2011-06-15 03:59:12
回答 2查看 1.4K关注 0票数 6

我继承了使用DynamicMethod在运行时生成方法的代码。我还需要修改正在生成的一些代码。

由于我是MSIL的n00b,我希望能够在Reflector中加载生成的代码,并确保代码能做我祈祷它做的事情;)

只是,我不知道如何将“匿名托管的DynamicMethods程序集”序列化到磁盘上。这个是可能的吗?如果是这样的话,是怎么做的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-15 06:25:23

我认为如果你想在Reflector或dotPeek中加载方法,你需要创建一个实际的程序集。为此,请使用use MethodBuilder而不是DynamicMethod。它们的大部分用法应该是相同的。

票数 3
EN

Stack Overflow用户

发布于 2011-07-06 17:17:00

尝尝这个,

代码语言:javascript
复制
  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");
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6349332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档