有没有办法反编译由NHibernate生成的动态代理类?

时间:2011-07-12 10:22:00

标签: c# .net nhibernate

我真的很想知道NHibernate生成的动态代理类中发生了什么。

我非常清楚NHibernate动态代理在更高级别上做了什么,但在调试会话期间能够对它们进行反编译(使用Reflector或类似的东西)肯定会派上用场。

那么,有没有办法对NHibernate生成的动态代理类进行反编译?

3 个答案:

答案 0 :(得分:3)

可以使用NHibernate 3.2.0(旧版本不自己生成代理)来完成。只需使用DEBUG和DEBUG_PROXY_OUTPUT编译符号重新编译NHibernate源代码。然后,当创建代理类型时,NHibernate会将模块(* .mod)和程序集(generatedAssembly.dll)文件写入当前目录。

答案 1 :(得分:1)

只需获取类所在的程序集并使用ILSpy打开它 在动态生成代理的情况下:
它也驻留在一个程序集中。您可以在程序中放入一些代码,用于标识生成的代理类所在的程序集,并将其转储到磁盘,然后在ILSpy中打开它。

答案 2 :(得分:1)

如果您正在参考NHibernate的集合代理,您可以直接下载NHibernate的源代码, 但如果你在运行时引用动态代理的nhibernate生成而不是我认为你可以。