2009-08-22 14 views
71

मैं अपने app.config फ़ाइल में एक कस्टम कॉन्फ़िगरेशन अनुभाग जोड़ना चाहता हूं। क्या ऐसा करने का कोई तरीका है और मैं अपने प्रोग्राम में इन सेटिंग्स को कैसे एक्सेस कर सकता हूं।app.config में कस्टम कॉन्फ़िगरेशन अनुभाग कैसे बनाएं?

<RegisterCompanies> 
    <Companies> 
     <Company name="Tata Motors" code="Tata"/> 
     <Company name="Honda Motors" code="Honda"/> 
    </Companies> 
</RegisterCompanies> 

उत्तर

120

ConfigurationElement कंपनी बनाएँ:

public class Company : ConfigurationElement 
{ 

     [ConfigurationProperty("name", IsRequired = true)] 
     public string Name 
     { 
      get 
      { 
       return this["name"] as string; 
      } 
     } 
      [ConfigurationProperty("code", IsRequired = true)] 
     public string Code 
     { 
      get 
      { 
       return this["code"] as string; 
      } 
     } 
} 

ConfigurationElementCollection:

public class Companies 
     : ConfigurationElementCollection 
    { 
     public Company this[int index] 
     { 
      get 
      { 
       return base.BaseGet(index) as Company ; 
      } 
      set 
      { 
       if (base.BaseGet(index) != null) 
       { 
        base.BaseRemoveAt(index); 
       } 
       this.BaseAdd(index, value); 
      } 
     } 

     public new Company this[string responseString] 
     { 
      get { return (Company) BaseGet(responseString); } 
      set 
      { 
       if(BaseGet(responseString) != null) 
       { 
        BaseRemoveAt(BaseIndexOf(BaseGet(responseString))); 
       } 
       BaseAdd(value); 
      } 
     } 

     protected override System.Configuration.ConfigurationElement CreateNewElement() 
     { 
      return new Company(); 
     } 

     protected override object GetElementKey(System.Configuration.ConfigurationElement element) 
     { 
      return ((Company)element).Name; 
     } 
    } 

और ConfigurationSection:

public class RegisterCompaniesConfig 
     : ConfigurationSection 
    { 

     public static RegisterCompaniesConfig GetConfig() 
     { 
      return (RegisterCompaniesConfig)System.Configuration.ConfigurationManager.GetSection("RegisterCompanies") ?? new RegisterCompaniesConfig(); 
     } 

     [System.Configuration.ConfigurationProperty("Companies")] 
      [ConfigurationCollection(typeof(Companies), AddItemName = "Company")] 
     public Companies Companies 
     { 
      get 
      { 
       object o = this["Companies"]; 
       return o as Companies ; 
      } 
     } 

    } 

और आप भी web.config में अपने नए विन्यास खंड (एप्लिकेशन रजिस्टर करना होगा। कॉन्फ़िगरेशन):

<configuration>  
    <configSections> 
      <section name="Companies" type="blablabla.RegisterCompaniesConfig" ..> 

तो आप

var config = RegisterCompaniesConfig.GetConfig(); 
foreach(var item in config.Companies) 
{ 
    do something .. 
} 
+14

इसके लायक ध्यान देने योग्य बात है कि आप एक MVC अनुप्रयोग का उपयोग कर रहे हैं, तो सूचीबद्ध अनुभाग ठीक है के साथ अपने config लोड। कंसोल ऐप, वेब सेवा और शायद अन्य लोगों के साथ, आपको 'blablabla.RegisterCompaniesConfig' – KevinDeus

+0

के बाद 'असेंबली नाम' होना चाहिए, अनुभाग टैग – ilmatte

+0

के प्रकार विशेषता में असेंबली निर्दिष्ट करने की आवश्यकता है मुझे अपवाद मिल रहा है " 'System.Configuration.IConfigurationSectionHandler' से उत्तराधिकारी .. मैं क्या गलत कर रहा हूँ? – Oysio

9

आप .NET 2.0 विन्यास ऊपर पर जॉन Rista के तीन भाग श्रृंखला की जांच करनी चाहिए CodeProject पर: बाद config अनुभाग मैं अपने app.config में जोड़ना चाहते हैं है।

अत्यधिक की सिफारिश की है, अच्छी तरह से लिखा और अत्यंत उपयोगी!

यह आप बहुत स्पष्ट रूप से दिखाता है कि कैसे आवश्यक वर्गों लिखने के आदेश कस्टम config वर्गों आप की जरूरत डिजाइन करने के लिए में (ConfigurationElement और/या ConfigurationSection से उत्पन्न होने वाली)।

संबंधित मुद्दे