Jeff, I was on the bus listening this morning, and I couldn’t wait to get off it just so that I could tell you (even though you probably already know) that for cross-cutting concerns and patterns you find yourself applying over and over again, like what you describe with your caching, you should really consider using aspects. Seriously, it will make your life easier, and your code more maintainable and pretty.
There are several frameworks for AOP in .Net. I have used (but am not affiliated with) an excellent one called PostSharp (http://www.sharpcrafters.com) that will let you factor your “check if this is in the cache – otherwise go fetch”-pattern out into one single aspect that you can then apply to all the places where you use this. In this way, if you ever need to change your caching strategy, you’ll only need to change the code in one place, rather than in a thousand of them. This also applies for your error handling, your transaction handling, and your performance tracing (guerrilla style). Aspects totally changed my way of coding, for the better.
Love that the podcast is back, can’t wait for next week’s instalment.