我使用this.session.Insert(对象fact1)或方法将事实放入工作集中。
现在,其中一个事实发生了变化,我称之为this.session.Replace(对象事实)。
NRules如何知道要替换哪个对象?它比较了平等的参考文献吗?它调用等号运算符吗?我猜您可能是在使用字典逻辑,因此对象的GetHashCode()等于()和确定两个事实是相同的,但是在继续我的设计之前,我需要一些肯定。
发布于 2019-03-13 04:21:24
当调用更新、UpdateAll、NRules或RetractAll时,引擎确实会在字典中查找事实。因此,引擎使用对象的等于和GetHashCode实现。
但是,如果更新/撤回相同的对象实例,就没有必要覆盖等于和GetHashCode,因为引用类型的默认实现(它使用ReferenceEquals )工作得很好。
https://stackoverflow.com/questions/55132638
复制相似问题