This class provides a strongly typed configuration base class that can read and write configuration data from various configuration stores including .NET .config files, plain XML files, strings and SQL Server databases.

This mechanism uses a class-first approach to configuration management where you declare your configuration settings as simple class properties on a subclass of this abstract class. The class then automatically reads configuration information from the configuration store into the class' properties. If settings don't exist they are auto-created, permissions permitting. You can create multiple configuration objects. The advantage of this class centric approach is that your configuration is not bound to any particular environment - you can use the configuration in a Web, desktop, console or service app using the same mechanism.

Using this class is easy: You create a subclass of AppConfiguration add a constructor (or two) and then simply add properties to the class. The implementation will handle persistence transparently. Typical implementation defines the configuration class as a static property on a global object of some sort (ie. App.Configuration.MySetting).

Storage is configured via a configuration provider that configures provider specific features. The configuration class then uses the provider to read and write data from the configuration store. The base providers also support encryption of individual fields.