我在 NHibernate 论坛上问过这个问题,但我认为这是一个普遍的问题。NHibernate 使用代理生成器(例如 Castle)来创建它的代理。
我想做的是扩展生成的代理,以便它实现我自己的一些自定义行为(即比较器)。我需要这个,因为以下标准 .NET 行为无法产生正确的结果:
//object AC is a concrete class
collection.Contains(AC) = true
//object AP is a proxy with the SAME id and therefore represents the same instance as concrete AC
collection.Contains(AP) = false
如果我的比较器是由 AP 实现的(即做 id 的匹配),那么 collection.Contains(AP) 将返回 true,正如我所期望的那样,如果代理是隐式的。(注意:对于那些说 NH 从您的基类继承的人,是的,它确实如此,但 NH 也可以从接口继承——这就是我们正在做的)
我完全不确定这是可能的或从哪里开始。这可以在 NH 使用的任何常见代理生成器中完成吗?