Working with Custom Providers
page 4 of 8
by Brian Mains
Feedback
Average Rating: 
Views (Total / Last 10 Days): 53754/ 65

Part 3: Provider Configuration

We see in the previous initialize method that it uses settings it retrieves from the configuration file.  This is the next part of the provider setup.  To do this, the NewsletterSection exposes a DefaultProvider and Provider collection property to store the name of the default provider, and contains a list of providers that the static class will use (discussed later).  The following NewsletterSection class, inheriting from ConfigurationSection, has these properties:

Listing 6

[
ConfigurationProperty("defaultProvider",
 DefaultValue = "AspNetDatabaseNewsletterProvider"),
StringValidator(MinLength = 1)
]
public override string DefaultProvider
{
      get { return (string)this["defaultProvider"]; }
      set { this["defaultProvider"= value; }
}
[ConfigurationProperty("providers")]
public ProviderSettingsCollection Providers
{
      get { return (ProviderSettingsCollection)this["providers"]; }
}

The ProviderSettingsCollection class is a standard .NET framework collection for exposing provider elements in the configuration file.  As with any provider, you need the name of the provider to reference it by, and the type of the provider to implement, which could be located in the App_Code, bin, or global assembly cache.

Listing 7

<newsletters defaultProvider="AspNetDatabaseNewsletterProvider">
      <providers>
            <add name="AspNetDatabaseNewsletterProvider"
 type="Nucleo.Web.Providers.DatabaseNewsletterProvider, Nucleo.Web"
 connectionStringName="NucleoDB" applicationName="Business" />
      </providers>
</newsletters>

Obviously, each provider needs its own custom settings; these settings are regulated by the Initialize method we saw previously.  In that initialize method, it made sure that the connection string name and application name attributes are present.  In this way, these two portions tie in together in this way.


View Entire Article

User Comments

Title: Source Code   
Name: Satish Nandigam
Date: 2010-10-27 2:43:31 AM
Comment:
Hi This is a nice article . Can please provide the source code for custom Provider for the Newsletter.
thanks,
N.Satish
Title: Thanks   
Name: Anitha T S
Date: 2010-07-26 7:31:51 AM
Comment:
Thank you very much for your article on providers. Your article is easy to read and understand! I am a better because of it. ;)
Title: Question Reply   
Name: Brian Mains
Date: 2009-10-16 2:53:52 PM
Comment:
Hello,

Yes, DefaultProvider doesn't exist within ConfigurationSection; it exists in my custom base class, which I should have posted, but I didn't. My apologies.

In your custom section class, just add:

[ConfigurationProperty("defaultProvider")]
public string DefaultProvider
{
get { return (string)this["defaultProvider"]; }
}

[
ConfigurationProperty("providers", IsDefaultCollection=false),
ConfigurationCollection(ProviderSettingsCollection)
]
public ProviderSettingsCollection Providers
{
get { return (ProviderSettingsCollection)this["providers"]; }
}

That's what exists in my base class, as a helper. You can also download the project at: http://www.codeplex.com/nucleo, which has these files in Nucleo.dll, in the Nucleo.Providers namespace. I will be posting an update to this project soon with updated AJAX controls, but this code hasn't been touched so it will remain the same, if you are interested.
Title: Question   
Name: Mark Toth
Date: 2009-10-16 2:08:41 PM
Comment:
When I derive a class from ConfigurationSection I get the following error for DefaultProvider "no suitable method found to override". Am I missing something?
Title: Thanks   
Name: Mahr G. Mohyuddin
Date: 2009-04-22 9:21:56 AM
Comment:
Well explained, Brian!. Thanks.
Title: Many Thanks   
Name: Linda
Date: 2009-02-11 9:58:01 AM
Comment:
Thank you very much for your article on providers. Your article is easy to read and understand! I am a better because of it. ;)
Title: still confused reply   
Name: Brian
Date: 2008-08-28 8:50:50 AM
Comment:
The static class is a class separate from the rest of the code, which exposes the provider base class to the public. It's responsible for instantiating it.

SO this is something that should be in the same project as the provider, but is a separate class.
Title: still confused :(   
Name: .
Date: 2008-08-28 3:19:45 AM
Comment:
Would have been nice to be able to download code. I'm at a loss as to where to put the static class - whether I put it in the application which is trying to use the providers, or in the provider code itself as a separate class.
Title: good articles   
Name: I LIKE LT
Date: 2007-09-05 9:16:47 PM
Comment:
very good articles
Title: Good   
Name: Bilal Wani
Date: 2007-03-20 7:17:27 AM
Comment:
Nice Article!!!
Title: Patil   
Name: Sandip
Date: 2007-03-15 5:16:26 PM
Comment:
Nice Article!!!

-Sandip Patil
Title: Good   
Name: Ramamuni Reddy
Date: 2007-02-18 11:25:54 PM
Comment:
Hello Brian Mains,
Very Good Article.

With Regrads
Ramamuni reddy Mulapaku
Title: Provider Utility   
Name: Bilal Hadiar [MVP]
Date: 2007-02-06 6:07:46 AM
Comment:
Hello Brian,
It is a well written article, congratulations!

I would like to refer you and all the readers to a utility I created a while ago that helps you generate the skeleton of a provider files in a single button click,
Check it here:
http://bhaidar.net/cs/archive/2006/07/07/376.aspx

Regards
Title: Mr.   
Name: KotiReddy.
Date: 2007-02-06 12:30:15 AM
Comment:
Very Good Article.


Regards,
Koti Reddy. S






Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2021 ASPAlliance.com  |  Page Processed at 2021-11-29 6:30:14 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search