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

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

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

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

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

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

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