I'm curious on how the NHibernate team has solved the QueryOver syntax, so that it works with intellisense and validation at compile time?
According to http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx they make use of extension methods and lambda expressions, but I've tried looking through the source but it doesn't really explains it fully to me.
How do they make them type safe, at compile time, without the need for any proxy classes that extends them?
I would like to "copy" this behavior but for that I need some basic understanding of the concept, any pointers to documentation on the subject is also welcome.