2009-11-20 12 views
14

मैं एक सी # नौसिखिया .NET 3.5 चला रहा हूं, और मैं App.config में एप्लिकेशन डिफ़ॉल्ट मानों का एक गुच्छा स्टोर करना चाहता हूं, क्योंकि सेटिंग्स सर्वर वातावरण द्वारा भिन्न हो सकती हैं (जैसे विकास, स्टेजिंग, उत्पादन)। मैं जो करना चाहता हूं वह this StackOverflow article में वर्णित जैसा है, लेकिन मैं गैर-स्ट्रिंग मानों (उदा। Int, bool) का उपयोग करने में भी सक्षम होना चाहता हूं। इस (नाम-मान केवल उदाहरण हैं, Btw) की तरह कुछ:दृढ़ता से टाइप किए गए चर सेट करने के लिए App.config का उपयोग

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <applicationSettings> 
     <MyApp> 
      <setting name="InitText" serializeAs="String"> 
       <value>Hello</value> 
      </setting> 
      <setting name="StartAt" serializeAs="Integer"> 
       <value>5</value> 
      </setting> 
      <setting name="IsWeekend" serializeAs="Boolean"> 
       <value>True</value> 
      </setting> 
     </MyApp> 
    </applicationSettings> 
</configuration> 

किसी ऐसा करने के तरीके का एक उदाहरण प्रदान कर सके, और कैसे सी # के माध्यम से मूल्यों को पुनः प्राप्त करने के लिए? मैंने बहुत सारे उदाहरण देखे हैं जिनके लिए उपयोग करने की आवश्यकता है और, लेकिन मुझे यकीन नहीं है कि मुझे उन तत्वों की आवश्यकता है, और यदि ऐसा है, तो उन्हें कैसे बनाएं।

उत्तर

28

.NET Framework के Application Settings architecture का उपयोग करने के बारे में क्या। आप डिफ़ॉल्ट मानों तक दृढ़ता से टाइप कर सकते हैं।

विंडोज़ एप्लिकेशन प्रोजेक्ट पर सेटिंग्स फ़ाइल स्वचालित रूप से संसाधन फ़ोल्डर में बनाई जाती है। फिर आप ऐप.कॉन्फिग फ़ाइल में जारी की गई एप्लिकेशन सेटिंग्स को जोड़ सकते हैं जैसा कि आपने अपने प्रश्न में दिखाया था।

उदाहरण के लिए:

int i = Settings.Default.IntSetting; 

bool b = Settings.Default.BoolSetting; 

संपादित करें: अपनी परियोजना सेटिंग्स आप हमेशा एक नया आइटम जोड़ने और फिर एक सेटिंग फ़ाइल का चयन करके एक जोड़ सकते हैं फ़ाइल शामिल नहीं है तो। (राइट क्लिक प्रोजेक्ट फ़ाइल करें और करें: जोड़ें-> नया आइटम-> सेटिंग्स फ़ाइल)। मेरे मामले में मैंने इसे सेटिंग्स नाम दिया लेकिन आप इसे जो कुछ भी चाहते हैं उसका नाम दे सकते हैं।

फ़ाइल दृश्य स्टूडियो जोड़ने के बाद सेटिंग डिज़ाइनर खुल जाएगा जिसमें आप अपनी दृढ़ता से टाइप की गई सेटिंग्स जोड़ सकते हैं। आपने जो कहा है उससे आपको एप्लिकेशन स्कोप पर सेटिंग सेट करनी चाहिए, न कि उपयोगकर्ता पर। फिर प्रोजेक्ट बनाएं और आपको फ़ाइल के नाम से कक्षा में पहुंच प्राप्त करनी चाहिए।

+0

मुझे लगता है कि मुझे यही चाहिए, लेकिन मैं सी # के माध्यम से चर का उपयोग करने में असमर्थ हूं। जब मैं "सेटिंग्स" टाइप करता हूं। Intellisense कुछ भी नहीं देखता है ... –

+1

यह वास्तव में ढांचे में बेक्ड नहीं है, बल्कि यह एक आईडीई चीज है। जब आप अपने सी #/वीबी प्रोजेक्ट में '.settings' फ़ाइल जोड़ते हैं, तो इसका उपयोग क्लास' सेटिंग्स' के लिए कोड जेनरेट करने के लिए किया जाता है जो उचित प्रकार के गुणों के रूप में कॉन्फ़िगरेशन सेटिंग्स को लपेटता है, और सभी आवश्यक कास्ट इत्यादि करता है। –

+0

धन्यवाद स्पष्टीकरण - मैं इसकी सराहना करता हूं। –

11
Boolean isWeekend = Convert.ToBoolean(ConfigurationManager.AppSettings["IsWeekend"]) 
+6

या बूलियन। ट्राईपर्स (...)। http://msdn.microsoft.com/en-us/library/system.boolean.tryparse.aspx –

+8

यह आवश्यकताओं के "दृढ़ता से टाइप किए गए चर" भाग में विफल नहीं होता है, फिर भी आप ऐप में एक स्ट्रिंग संग्रहीत कर रहे हैं .config –

+0

हाँ, मैं उचित प्रकार के रूप में एक स्ट्रिंग को रिकॉर्ड्स नहीं करना चाहता हूं। –

2

जेजी सुझाव दिया गया आइटम स्वचालित रूप से विजुअल स्टूडियो द्वारा किया जा सकता है। ऐपसेटिंग विज़ार्ड as described in the MSDN का उपयोग करें। इसके अलावा पूरे Application Settings बुनियादी ढांचे को पढ़ने के लायक हो सकते हैं।

-1

लगता है जैसे आप कस्टम <configSection> चाहते हैं। असल में, यह इस तरह काम करता है:

- एक कॉन्फ़िगरेशन क्लास बनाएं जिसमें उचित डिफ़ॉल्ट मान हैं, आदि, और एक अच्छी विरासत संरचना स्थापित करें ताकि यह आपके web.config सेटिंग्स के आधार पर स्वतः लोड हो जाए। web.config करने के लिए अपने config अनुभाग जोड़ें, "प्रकार" है कि आपकी सेटिंग लोड होगा निर्दिष्ट करने तो .NET फ़्रेमवर्क

आप इसके बारे में MSDN library पर जानकारी के सभी प्रकार प्राप्त कर सकते हैं प्रारंभ करने में क्या पता चल जाएगा। उदाहरण एएसपीनेट हैं, लेकिन वे ऐप कॉन्फ़िगरेशन के साथ भी ठीक काम करते हैं।

+0

इसके लिए आपको एक कस्टम कॉन्फ़िगरेशन लिखने की आवश्यकता नहीं है। – BrainSlugs83

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

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