我真的很想知道NHibernate生成的动态代理类中发生了什么。
我非常清楚NHibernate动态代理在更高级别上做了什么,但在调试会话期间能够对它们进行反编译(使用Reflector或类似的东西)肯定会派上用场。
那么,有没有办法对NHibernate生成的动态代理类进行反编译?
答案 0 :(得分:3)
可以使用NHibernate 3.2.0(旧版本不自己生成代理)来完成。只需使用DEBUG和DEBUG_PROXY_OUTPUT编译符号重新编译NHibernate源代码。然后,当创建代理类型时,NHibernate会将模块(* .mod)和程序集(generatedAssembly.dll)文件写入当前目录。
答案 1 :(得分:1)
只需获取类所在的程序集并使用ILSpy打开它
在动态生成代理的情况下:
它也驻留在一个程序集中。您可以在程序中放入一些代码,用于标识生成的代理类所在的程序集,并将其转储到磁盘,然后在ILSpy中打开它。
答案 2 :(得分:1)
如果您正在参考NHibernate的集合代理,您可以直接下载NHibernate的源代码, 但如果你在运行时引用动态代理的nhibernate生成而不是我认为你可以。