हासिल करने के लिए इस और अधिक कठिन की तुलना में यह होना चाहिए, क्योंकि System.Configuration एपीआई अनुमति नहीं देता है: एक ही रास्ता है कि मैं मिल गया है, अब तक, इस तरह विन्यास, जो गन्दा है फ़ॉर्मेट करने के लिए है आप अपने माता-पिता को ConfigurationElement
से नेविगेट करने के लिए। इसलिए, यदि आप कुछ जानकारी तक पहुंचना चाहते हैं जो मूल तत्व पर आपको उस संबंध को मैन्युअल रूप से बनाने की आवश्यकता है।
public class CustomSettingsSection : ConfigurationSection
{
[ConfigurationProperty("someProperty", DefaultValue="")]
public string SomeProperty
{
get { return (string)base["someProperty"]; }
set { base["someProperty"] = value; }
}
[ConfigurationProperty("", IsDefaultCollection = true)]
public CustomSettingElementCollection Elements
{
get
{
var elements = base[""] as CustomSettingElementCollection;
if (elements != null && elements.Section == null)
elements.Section = this;
return elements;
}
}
}
public class CustomSettingElementCollection : ConfigurationElementCollection
{
internal CustomSettingsSection Section { get; set; }
public override ConfigurationElementCollectionType CollectionType
{
get { return ConfigurationElementCollectionType.BasicMap; }
}
public CustomSettingElement this[string key]
{
get { return BaseGet(key) as CustomSettingElement; }
}
protected override ConfigurationElement CreateNewElement()
{
return new CustomSettingElement { Parent = this };
}
protected override object GetElementKey(ConfigurationElement element)
{
return (element as CustomSettingElement).Key;
}
protected override string ElementName
{
get { return "customSetting"; }
}
}
public class CustomSettingElement : ConfigurationElement
{
internal CustomSettingElementCollection Parent { get; set; }
public string SomeProperty
{
get
{
if (Parent != null && Parent.Section != null)
return Parent.Section.SomeProperty;
return default(string);
}
}
[ConfigurationProperty("key", IsKey = true, IsRequired = true)]
public string Key
{
get { return (string)base["key"]; }
set { base["key"] = value; }
}
[ConfigurationProperty("value", DefaultValue = "")]
public string Value
{
get { return (string)base["value"]; }
set { base["value"] = value; }
}
}
आप देख सकते हैं कि CustomSettingElementCollection
एक Section
संपत्ति जो खंड के Elements
गेटर में सेट हो जाता है: मैं एक साथ एक नमूना कार्यान्वयन करता है कि आपके सवाल में config टुकड़ा के लिए रख दिया है। बदले में CustomSettingElement
में Parent
संपत्ति है जो संग्रह की CreateNewElement()
विधि में सेट हो जाती है।
तब यह संबंध पेड़ को चलाना और SomeProperty
तत्व को तत्व में जोड़ने के लिए संभव बनाता है, भले ही यह उस तत्व पर वास्तविक कॉन्फ़िगरेशनप्रॉपर्टी के अनुरूप न हो।
आशा है कि आपको यह पता चल जाएगा कि आपकी समस्या का समाधान कैसे करें!
यह पूरी तरह से काम किया! धन्यवाद! –