2010-06-19 18 views
6

अपेक्षाकृत लंबी पोस्ट के लिए अग्रिम में माफी - मैंने जितनी प्रासंगिक जानकारी (कोड सूची सहित) प्रदान करने की कोशिश की है!कस्टम वेब.कॉन्फिग सेक्शन (एएसपी.नेट)

मैं पिछले कुछ घंटों से काम कर रहा हूं, जो कुछ काम करने के लिए web.config फ़ाइल में एक कस्टम सेक्शन को लागू करने पर काम कर रहा हूं, लेकिन मुझे यह काम नहीं मिल रहा है।

<mvcmodules> 
    <module moduleAlias="name" type="of.type"> 
     <properties> 
      <property name="propname" value="propvalue" /> 
     </properties> 
    </module> 
</mvcmodules> 

वर्तमान में, मैं निम्नलिखित वर्गों की स्थापना की और काम कर (कुछ) है: निम्नलिखित मैं अपने XML संरचना के रूप में उपयोग करना चाहते हैं क्या है

  • ModuleSection
  • ModuleCollection
  • मॉड्यूल
  • ModulePropertyCollection
  • ModuleProperty

एकमात्र तरीका जिस तरह से मैं यह देखना चाहता हूं कि मैं ऐसा करना चाहता हूं, मेरी घोषणाओं को दूसरे माता-पिता में लपेटना है। हालांकि, जब मैं ऐसा करता हूं, तो मुझे एक त्रुटि मिलती है यदि मेरे पास टैग के एक से अधिक उदाहरण हैं ("तत्व केवल इस खंड में एक बार दिखाई दे सकता है।"), और एक टैग के साथ, जानकारी को पढ़ा नहीं जा रहा है वस्तुओं।

मैं एक छोटे से बुनियादी प्रलेखन लिखा है ताकि आप मुझे यह कैसे की संरचना कर रहा हूँ की एक विचार प्राप्त कर सकते हैं और उम्मीद है कि देख मैं कहाँ गलत जा रहा हूँ

ModuleSection इस वर्ग के एक ModulesCollection वस्तु धारण

namespace ASPNETMVCMODULES.Configuration 
{ 
    public class ModulesSection : System.Configuration.ConfigurationSection 
    { 
     [ConfigurationProperty("modules", IsRequired = true)] 
    public ModuleCollection Modules 
    { 
     get 
     { 
      return this["modules"] as ModuleCollection; 
     } 
    } 
} 

ModulesCollection धारण मॉड्यूल का एक संग्रह वस्तुओं

namespace ASPNETMVCMODULES.Configuration 
{ 
public class ModuleCollection : ConfigurationElementCollection 
{ 
    [ConfigurationProperty("module")] 
    public Module this[int index] 
    { 
     get 
     { 
      return base.BaseGet(index) as Module; 
     } 
     set 
     { 
      if (base.BaseGet(index) != null) 
      { 
       base.BaseRemoveAt(index); 
      } 

      this.BaseAdd(index, value); 
     } 
    } 

    protected override ConfigurationElement CreateNewElement() 
    { 
     return new Module(); 
    } 

    protected override object GetElementKey(ConfigurationElement element) 
    { 
     return ((Module)element).ModuleAlias; 
    } 
} 

}

मॉड्यूल मॉड्यूल और एक ModulePropertyCollection वस्तु के बारे में जानकारी

public class Module : ConfigurationElement 
{ 
    [ConfigurationProperty("moduleAlias", IsRequired = true)] 
    public string ModuleAlias 
    { 
     get 
     { 
      return this["moduleAlias"] as string; 
     } 
    } 

    [ConfigurationProperty("type", IsRequired = true)] 
    public string ModuleType 
    { 
     get 
     { 
      return this["type"] as string; 
     } 
    } 

    [ConfigurationProperty("properties")] 
    public ModulePropertyCollection ModuleProperties 
    { 
     get 
     { 
      return this["properties"] as ModulePropertyCollection; 
     } 
    } 
} 

ModulePropertyCollection ModuleProperty का एक संग्रह ऑब्जेक्ट्स शामिल

public class ModulePropertyCollection : ConfigurationElementCollection 
{ 
    public ModuleProperty this[int index] 
    { 
     get 
     { 
      return base.BaseGet(index) as ModuleProperty; 
     } 
     set 
     { 
      if (base.BaseGet(index) != null) 
      { 
       base.BaseRemoveAt(index); 
      } 

      this.BaseAdd(index, value); 
     } 
    } 

    protected override ConfigurationElement CreateNewElement() 
    { 
     return new ModuleProperty(); 
    } 

    protected override object GetElementKey(ConfigurationElement element) 
    { 
     return ((ModuleProperty)element).Name; 
    } 
} 

ModuleProperty मॉड्यूल गुण

public class ModuleProperty : ConfigurationElement 
{ 
    [ConfigurationProperty("name", IsRequired = true)] 
    public string Name 
    { 
     get 
     { 
      return this["name"] as string; 
     } 
    } 

    [ConfigurationProperty("value", IsRequired = true)] 
    public string Value 
    { 
     get 
     { 
      return this["value"] as string; 
     } 
    } 
} 

उत्तर

3

मुझे लगता है कि आप एक संपत्ति ConfigurationCollectionAttribute विशेषता के साथ सजाया बनाने की जरूरत के बारे में जानकारी रखती है। मैंने आपका कोड स्कैन किया और इसे कहीं भी संदर्भ नहीं देखा।

एमएसडीएन लिंक वास्तव में एक उपयोगी उदाहरण है। मैंने हाल ही में एक कस्टम कॉन्फ़िगरेशन अनुभाग स्वयं को एक साथ रखा है, और यह पृष्ठ पूरी तरह से पर्याप्त पाया है। विजुअल स्टूडियो में अपने कॉन्फ़िगरेशन सेक्शन के लिए Intellisense समर्थन को सक्षम करने के लिए my question देखें।

+0

आह, बहुत अच्छा। बहुत बहुत धन्यवाद, अच्छा महोदय! एक इलाज किया। पहली बार भी! – AndyBursh

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