2011-10-24 13 views
7

मैं सी # का उपयोग कर एक सेवा लिखने की प्रक्रिया में हूं और मुझे app.config फ़ाइल के भीतर तारों की एक सूची स्टोर करने की आवश्यकता है। मेरे पास 161 है।सी # की एप्लिकेशन कॉन्फ़िगरेशन "app.config" फ़ाइल ... संग्रह कैसे संग्रहीत करें?

मैं इस जानकारी को app.config फ़ाइल में कैसे संग्रहीत कर सकता हूं? एक तरीका होना चाहिए, क्योंकि ये दृढ़ता से टाइप किए गए मान हैं और इस प्रकार मैं उन्हें एक्सेस करने के लिए कोड में किसी भी वैध .NET प्रकार का आसानी से उपयोग करना चाहता हूं!

मैं एक मान रखने से बचना चाहता हूं जो स्पष्ट प्रदर्शन समस्याओं के लिए अल्पविराम से अलग सूची का उपयोग करता है।

+0

अल्पविराम से अलग सूची प्रदर्शन कैसे प्रभावित करेगा? मैंने कॉन्फ़िगरेशन फ़ाइलों में कॉमा-डिलीमिटेड स्ट्रिंग का उपयोग पहले किया है और किसी भी प्रदर्शन समस्या को नहीं देखा है। – Tim

+0

@Tim - मैं मानता हूं कि प्रदर्शन शायद इसके लिए ड्राइवर नहीं है, लेकिन 161 आइटमों के लिए, एक अल्पविराम से अलग सूची आपकी app.config फ़ाइल में सबसे सुंदर समाधान नहीं है। यह देखते हुए कि app.config एक्सएमएल है और वैसे भी डी-सीरियलाइज किया जाएगा, यह आपके डेटा को एक्सएमएल में स्टोर करने के लिए बहुत अच्छा है। – Fenton

उत्तर

11

मैं माइक्रोसॉफ्ट के दृश्य स्टूडियो 2010.

  1. का उपयोग समाधान एक्सप्लोरर में, गुण अपनी परियोजना के नोड का विस्तार करें।

  2. समाधान एक्सप्लोरर में, .settings फ़ाइल जिसमें आप नई सेटिंग जोड़ने के लिए चाहते हैं डबल क्लिक करें। इस फ़ाइल के लिए डिफ़ॉल्ट नाम सेटिंग्स.सेटिंग है।

  3. सेटिंग्स डिजाइनर में, नाम, प्रकार, स्कोप, और अपनी स्थापना के लिए मूल्य निर्धारित किया है। प्रत्येक पंक्ति एक एकल सेटिंग का प्रतिनिधित्व करता है।

  4. आपको जिस प्रकार की आवश्यकता है वह System.Collections.Specialized.StringCollection है। यह पर क्लिक करने के बाद स्थित हो सकता है ड्रॉपडाउनलिस्ट के अंत में ब्राउज़ करें जो तब दिखाई देता है जब आप सेट सेट करने के लिए क्लिक करते हैं।

  5. मूल्य टेक्स्टबॉक्स के अंत में दिखाई देने वाले बटन पर क्लिक करें।

  6. दिखाई देने वाले संवाद में, एक-एक करके, अपने तारों में टाइप करें।

This is how it goes.

10

वहाँ एक अच्छा Best Way Of Saving Lists in App.Config

में अपने app.config फ़ाइलों में सूचियों संग्रहीत करने के बारे लेख (या कोई कस्टम वस्तु) अनिवार्य रूप से, आप एक वस्तु है कि डेटा का प्रतिनिधित्व करता पैदा करते हैं।

public class MyConfig 
{ 
    public string[] myList; 
    public string someOtherValueIfYouWant; 
} 

और इसके लिए एक config हैंडलर लिखना ...

public class ConfigSectionHandler : IConfigurationSectionHandler 
{ 
    public const string SECTION_NAME = "MyConfig"; 
    public object Create(object parent, object configContext, XmlNode section) 
    { 
     string szConfig = section.SelectSingleNode("//MyConfig").OuterXml; 
     MyConfig retConf = null; 

     if (szConfig != string.Empty || szConfig != null) 
     { 
      XmlSerializer xsw = new XmlSerializer(typeof(MyConfig)); 
      MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szConfig)); 
      ms.Position = 0; 
      retConf = (MyConfig)xsw.DeSerialize(ms); 
     } 
     return retConf; 
    } 

} 

और यह आप अपने app.config फ़ाइल में निम्न XML डाल करने के लिए अनुमति देता है ...

टेल अनुप्रयोग।अपने शांत config अनुभाग

<configSections> 
    <section name="MyConfig" type="ConfigSectionHandler,someAssembly" /> 
</configSection> 

और फिर जोड़ने के अपने config अनुभाग के बारे में config ...

<MyConfig> 
    <myList>First one</myList> 
    <myList>Second one</myList> 
    <myList>Keep going</myList> 
    <myList>And so on</myList> 
    <someOtherValueIfYouWant>some non array config</someOtherValueIfYouWant> 
</MyConfig> 
+1

चेतावनी: यह विषय System.Configuration.IConfigurationSectionHandler इंटरफ़ेस का उपयोग करता है, जिसे .NET Framework संस्करण 2.0 में बहिष्कृत किया गया है। एक उदाहरण के लिए जो System.Configuration.ConfigurationSection क्लास का उपयोग करता है, देखें कि कैसे: कॉन्फ़िगरेशनसेक्शन का उपयोग कर कस्टम कॉन्फ़िगरेशन अनुभाग बनाएं (http://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.100).aspx) – woohoo

-3

https://stackoverflow.com/a/30178144/878539

StringCollection नहीं annoyance'ness जब के प्रयोजन के लिए VS2015RC में सिफारिश की है प्रोजेक्ट के लिए प्रॉपर्टी सेटिंग्स डायलॉग विंडो लोड करना और डेटा को फिर से सहेजना। यदि आपके पास serializeAs = "Xml" के लिए दर्जन प्रविष्टियां हैं और हर बार जब आप प्रॉपर्टी विंडो खोलते हैं तो यह प्रत्येक प्रविष्टि के लिए एक संवाद के साथ पॉपअप करेगा जो आपको ओवरराइट की पुष्टि करने के लिए कहता है। हां/नहीं बिल्कुल कुछ नहीं करता है।

प्रत्येक फ़ाइल के लिए डेटा विसंगति इसे बंद कर देगी और यह ज्ञात समस्या है। मेरी अन्य पोस्ट संबंधित देखें।

मैं आपको वीएस -2010 का उपयोग करने के लिए वोट दूंगा और इस तरह सुझाव दे रहा हूं, लेकिन मेरे पास पर्याप्त प्रतिनिधि नहीं है और यह वीएस2015 आरसी के माध्यम से भी जारी है।

कस्टम कॉन्फ़िगरेशन जैसे वर्कअराउंड का उपयोग करें या डिज़ाइनर या app.config से अपने संग्रह को छोड़ने का कोई तरीका खोजें। एक या दूसरा।

केवल उन लोगों के लिए व्यवहार्य समाधान जो नाग संवाद विंडो के साथ रखने के लिए तैयार हैं या शायद ही कभी सेटिंग संपत्ति की जानकारी संपादित करते हैं।

क्या आप उत्पादन के लिए नाग स्क्रीन नुक्सान की सिफारिश करेंगे या किसी भी प्रकार की वाणिज्यिक परियोजना को रिलीज़ करेंगे? : पी

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