I recently had reason to revisit the exact mechanisms Microsoft use when you assert facts to the Microsoft Rules Engine. I was discussing stuff on-line with a fellow rules enthusiast when a terrible thought occurred to me. Can the MS BRE always uniquely identify each different fact, or is there a chance that sometimes it might confuse two facts with each other?
For a couple of days, I was convinced that I had stumbled on a significant bug. Indeed, at one point, I thought there was such a serious problem that I would have to recommend to my company that we desist from any further use of Microsoft’s rules engine. Melodramatic, huh! Fortunately, after a bit more research, I discovered that I was quite wrong. The MS BRE does not suffer from a terminal flaw and can be trusted to always distinguish correctly between all your facts. It’s worth recording my suspicions, mistakes and eventual enlightenment. There is something useful to learn, here, about the inner workings of the engine, and also about Microsoft’s implementation of the Hashtable class in .NET.
Read more at http://geekswithblogs.net/cyoung/articles/110852.aspx