【发布时间】:2018-01-09 07:45:19
【问题描述】:
我正在使用 emit 动态创建类型。我对此很陌生,所以我想看看我创建的代码,以确保它是正确的。
是否可以查看生成的代码?有什么合适的方法来解决这个问题?
[编辑] 标题已更正
【问题讨论】:
-
R' Emit 与 Code DOM 相比相当困难。加上后者生成代码作为第一个要求而不是事后的想法:)
-
使用
AssemblyBuilder.Save()方法将程序集写入磁盘是您的用例中的一个选项吗?那将是简单的方法。 -
如果 ILSpy 什么都没有显示,那么很有可能什么也没有。您是否对每种动态类型都调用了
TypeBuilder.CreateType()方法?您必须对每种动态类型执行此操作。 -
您的反编译程序集是完全空的还是只包含类型/字段/...但没有代码?请务必使用 ILSpy 中的 IL 视图,以不受反编译器在生成 c# 代码时所做的某些解释的影响。
-
快速猜测,保存时检查模块DLL名称是否与程序集名称匹配。
标签: c# reflection cil reflection.emit decompiler