ऐपसेटिंग और कनेक्शनस्ट्रिंग्स दोनों गुण सीधे कॉन्फ़िगरेशन प्रबंधक पर उपलब्ध हैं।
हालांकि, applicationSettings और userSettings, जो परिचित Settings.settings आप वी.एस. सेटिंग्स डिजाइनर में संपादित कर सकते हैं के अनुरूप है, पर प्राप्त करने के लिए इतना आसान नहीं है। ऐपसेटिंगएप्लिकेशन सेटिंग्स जो उपयोग में कॉन्फ़िगरेशन फ़ाइल के एक पूरी तरह से अलग अनुभाग में है।
आप applicationSettings और userSettings पर प्राप्त करने के लिए खनन दृष्टिकोण के ऊपर या एक संस्करण का उपयोग करना चाहिए। इसके अलावा, एप्लिकेशन सेटिंग्स केवल अगली बार जब आप एप्लिकेशन शुरू करेंगे, तो अपडेट हो जाएगा, अगर आप रनटाइम पर भी उन्हें लिखने में सक्षम हैं।तो फिर तुम
///<summary>
/// return the applicationSettings section
///</summary>
///<returns></returns>
public static ClientSettingsSection GetSettingsSection(ConfigurationSectionGroup group, string clientSectionName)
{
return (ClientSettingsSection)group.Sections[clientSectionName];
}
///<summary>
/// return the section settings collection
///</summary>
///<returns></returns>
public static System.Configuration.SettingElementCollection GetSettingsCollection(ClientSettingsSection section)
{
return section.Settings;
}
///<summary>
/// return the connectionStrings section collection
///</summary>
///<returns></returns>
public static System.Configuration.SettingElementCollection ConnectionStringsCollection()
{
return ((ClientSettingsSection)SharedConfigSettings.GetSection("connectionStrings")).Settings;
}
///<summary>
/// A collection of all the UserSettings in a SettingElementCollection
///</summary>
///<returns></returns>
public static SettingElementCollection UserSettings()
{
return
GetSettingsCollection(GetSettingsSection(GetSettingsSectionGroup(@"userSettings"),
@"MyAssembly.Properties.Settings"));
}
///<summary>
/// A collection of all the ApplicationSettings in a SettingElementCollection
///</summary>
///<returns></returns>
public static SettingElementCollection ApplicationSettings()
{
return
GetSettingsCollection(GetSettingsSection(GetSettingsSectionGroup(@"applicationSettings"),
@"MyAssembly.Properties.Settings"));
}
, दुर्भाग्य:
उदाहरण के लिए (कहीं और से cribbed -: - धन्यवाद)
public static string ReadSetting(string sectionGroupName, string sectionName, string settingName, Configuration config = null)
{
if (config == null)
config = SharedConfigSettings;
// Get sectionGroup
var sectionGroup =
config.GetSectionGroup(sectionGroupName);
// Get section
var section =
(ClientSettingsSection)sectionGroup.Sections.Get(sectionName);
// Get setting
var setting = section.Settings.Get(settingName);
// Read setting value
return setting.Value.ValueXml.InnerText;
}
और एक अन्य उदाहरण के लिए (दुनिया के लिए धन्यवाद कई उदाहरण से adaoted) अभी भी SettingElement ऑब्जेक्ट्स से निपटना होगा जो इन अनुभागों में सेटिंग्स संग्रह में हैं। प्रत्येक को संपत्ति के लिए deserialized है जब तक यह एक स्ट्रिंग उदा। एक applicationSettings SettingElement (एक गतिशील रूप कार्यावधि में अद्यतन नहीं किया जा सकता है) के लिए:
(व्यायाम)
var y = GetSettingsSection(GetSettingsSectionGroup(@"applicationSettings"), @"MyAssembly.Properties.Settings");
var c = (y.Settings.Cast<SettingElement>().FirstOrDefault(s => s.Name == "WellKnownDirectories").Value).ValueXml
.InnerXml; // the setting as Xml
var xs = new XmlSerializer(typeof(string[]));
var strings = (string[])xs.Deserialize(new XmlTextReader(c, XmlNodeType.Element, null));
foreach (string s in strings)
{
Console.WriteLine(s);
}
एक स्ट्रिंग संपत्ति यह आसान है के लिए (इस उदाहरण से ऊपर पहले एक साथ अनिवार्य रूप से अनावश्यक है):
var s = (y.Settings.Cast<SettingElement>().FirstOrDefault(s => s.Name == "MyUserSettingName").Value).ValueXml
.InnerText
इन सभी उदाहरणों में एप्लिकेशन सेटिंग्स के साथ झुका हुआ है। वही दृष्टिकोण उपयोगकर्ता सेटिंग्स के साथ काम कर सकता है, संभवतः कुछ सहेजने के तरीकों के अतिरिक्त और साथ ही, और आपको ट्रैक (अधिक या कम) रखने की आवश्यकता है जिसमें से कई कॉन्फ़िगरेशन फ़ाइलें वास्तव में खेल में हैं - मुख्य, रोमिंग या स्थानीय ।
मैं ऐसा क्यों कर रहा हूं? चूंकि दो संबंधित अनुप्रयोग और एक सामान्य वर्ग लाइब्रेरी (या पुस्तकालय) सभी को उन अनुप्रयोगों में से एक के स्वामित्व वाली सेटिंग्स का उपयोग करने की आवश्यकता होती है जहां सेटिंग्स को दृष्टि से प्रबंधित किया जाता है। क्या किसी ने इसे बेहतर तरीके से हल किया है?
धन्यवाद।
ठीक के लिए बाहर की जरूरत के साथ के रूप में ज्यादा पूरा होगा कोशिश कर रहे हैं। मैं उस तरह स्ट्रिंग सरणी पढ़ सकता हूं। लेकिन, तार असेंबली में संकलित डिफ़ॉल्ट से आ रहे हैं। असेंबली तैनात होने के बाद मुझे उस संग्रह में तार जोड़ने, हटाने और बदलने में सक्षम होना चाहिए। .Properties.Settings.Default .config फ़ाइल में संपादन नहीं लेता है। कनेक्शन स्ट्रिंग के साथ एक ही समस्या थी जब तक कि मैं कॉन्फ़िगरेशन प्रबंधक से गुजरना शुरू नहीं कर देता। –
आपको शायद कॉन्फ़िगरेशन प्रबंधक की विधि तक पहुंचने की आवश्यकता है: कॉन्फ़िगरेशन प्रबंधक। गेटसेक्शन ("एप्लिकेशन सेटिंग्स"); जो ऑब्जेक्ट को वापस लेना चाहिए जिसके लिए आप – jkelley
कॉन्फ़िगरेशन मैनेजर का विश्लेषण करना चाहते हैं। गेटसेक्शन ("एप्लिकेशन सेटिंग्स") शून्य –