Some time ago I have found some articles about a feature of ASP.NET called the Build Providers. I especially liked the one about generating classes representing tables from the database. More on that one on Fritz Onion's blog.Since then I have found numerous ways of using build providers to make my life easier. Today I have built a library that will greatly simplify keeping all Response.Redirect's up to date.
So without further ado I present the PathsBuildProvider.Using it is as simple as placing a single file with ".pbp" extenstion in the "App_Code" directory and adding a build provider under the compilation section of of the "web.config" file and:
type="PathsBuildProvider.PathsBuildProvider" extension=".pbp"
The .pbp file should contain one word which will be used as a namespace for the generated types. If the file is empty this namespace will default to "Paths".From now on you can type your namespace name and when you hit "." the name of the application should appear as the only choice. The instance of this class provides a way to access the names of all files located in the application folder in a strongly typed way i.e.: each file is represented by a property such as "Default_aspx". Such a property returns an absolute virtual path to a file so that it can be used in places sucha as Response.Redirect, or Server.MapPath.Directories are also accessible by means of the properties prefixed with "_". Each directory provides access to its files and sub directories.
You can see an example of how it looks here:
I have put the code for the soulution here: PathsBuildProvider.zip (11,13 KB).
Keep in mind that the code is for demonstrational purposes only and as so it is not a production quality . Feel free to use it as you wish though. Any feedback is always welcome.
and/or digg it and/or vote on it on dzone
Remember Me
a@href@title, strike
Powered by: newtelligence dasBlog 2.0.7226.0
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2010, Michal Talaga
E-mail