ASP.Net 2.0 is bundled with some great technology, especially what is available through the provider model. One of the new providers in 2.0 is the VirtualPathProvider. Scott Guthrie put out some information about this provider, as has David Ebbo in this post. My VirtualThemeProvider uses the ASP.Net VirtualPathProvider to provide flexible theme support for ASP.Net projects. There were two primary objectives for this provider. Firstly, I wanted to support the ability to filter directories and files that are available in a theme directory for a given named value. Secondly, I wanted to support a global theme concept that included the ability to merge the theme directory with the global directory.
Take the example of a web project that has mutliple themes that are assigned depending on the type of user. Each theme has a subset of styles that display that theme according to different accessibility requirements (such as vision impared users).