2009-03-27 7 views

Répondre

1

Matt « s réponse est à peu près là, avec quelques coups secs.

Si vous êtes heureux de l'avoir en dehors du code de configuration lui-même, une fois que vous avez choisi votre configuration de fournisseur, vous pouvez simplement parler à la section principale de chaînes de connexion directement à partir de vos classes de fournisseur:

var provider = ConfigurationManager.GetSection("ProviderConfiguration") 
       as ProdviderSettingsSection; 

ConnectionString connStr = 
    WebConfigurationManager.ConnectionStrings[provider.ConnectionString]; 

Si vous voulez tout emballer dans le fournisseur, vous aurez besoin d'un champ de support pour vos propriétés:

public class ProvderSettingsConfigElement : ConfigurationElement { 
    private m_ConnectionString; 

    [ConfigurationProperty("connectionString")] 
    public string ConnectionString{ 
    // Probably want to check m_ConnectionString for IsNullOrEmpty 
    get{ return WebConfigurationManager.ConnectionStrings[m_ConnectionString]; } 
    set{ m_ConnectionString = value;} 
    } 
} 
1

Vous pouvez créer un élément de configuration personnalisé qui lit la configuration de la configuration de l'application principale.

Ne prenez pas cette ligne pour la ligne, mais quelque chose comme ...

public class ProviderConfiguration : ConfigurationSection 
{ 
    #region Constructors 
    public ProviderConfiguration() { } 
    #endregion 

    #region Public Properties 
    [ConfigurationProperty("ProviderConnection")] 
    public ProvderSettingsConfigElement ProvderConnection 
    { 
     get { return (ProvderSettingsConfigElement)this["ProviderConnection"]; } 
    } 

    #endregion 
} 

public class ProvderSettingsConfigElement : ConfigurationElement 
{ 
    #region Constructors 
    public ProvderSettingsConfigElement() { } 

    public WebSecuritySettingsDataProviderElement(string name, string type) 
    { 
     ConnectionString = ConfigurationManager.Get("mainAppConnString"); 
    } 

    #region Public Properties 
    [ConfigurationProperty("connectionString")] 
    public string ConnectionString{get; set;} 

} 
Questions connexes