Now that my book is largely done, I finally have time to focus on some things that have not received the attention they deserve lately. Thankfully, Jason Jarett was kind enough to introduce some great new ideas to i4o, which after having mulled over them for far too long, I am releasing into the wild as of this weekend.
Details of the changes are nicely documented on his blog.
The jist of the changes though are to introduce a better way, leveraging lambdas, to specify an index (the new IIndexSpecification<T> interface). Prior to this release, you either had to use attributes – something you can only really do with code you control, or you had to use strings to specify the property. IIndexSpecification<T> is a nice seperation of those concerns, so that your classes can truly be not concerned about how they are being indexed (as we have done with the POCO changes from the previous release), while more easily being refactored (i.e. member name change refactoring will now work with indexes).
In addition, performance improvements to reduce the number of lookups using reflection have been introduced as well.
I really owe a huge debt of gratitude to Jason, who took it upon himself to introduce these features and share them with the world. I am very excited about how this has evolved over the past year and a half.
As for where we go next, now that I am done with the book and have more time to work on open source projects, the next round of changes will (finally) widen the number of query types that can leverage the index, similar to the work Rocky and I did with indexing in CSLA. Look for that sometime in April/May of this year.