खोज…


.NET 1.x में कॉन्फ़िगरेशनसेटिंग्स से AppSettings

घटा हुआ उपयोग

.NET 1.0 और 1.1 में असेंबली के लिए सेटिंग्स पुनः प्राप्त करने का मूल तरीका कॉन्फ़िगरेशनसेटिंग क्लास था। इसे कॉन्फ़िगरेशन प्रबंधक वर्ग और WebConfigurationManager वर्ग द्वारा अलग किया गया है।

यदि आपके पास कॉन्फ़िगरेशन फ़ाइल के appSettings अनुभाग में समान नाम के साथ दो कुंजी हैं, तो अंतिम एक का उपयोग किया जाता है।

app.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="keyName" value="anything, as a string"/>
    <add key="keyNames" value="123"/>
    <add key="keyNames" value="234"/>
  </appSettings>
</configuration>

Program.cs

using System;
using System.Configuration;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            string keyValue = ConfigurationSettings.AppSettings["keyName"];
            Debug.Assert("anything, as a string".Equals(keyValue));

            string twoKeys = ConfigurationSettings.AppSettings["keyNames"];
            Debug.Assert("234".Equals(twoKeys));

            Console.ReadKey();
        }
    }
}

.NET 2.0 और बाद में विन्यास प्रबंधक से AppSettings पढ़ना

कॉन्फ़िगरेशन AppSettings क्लास वर्ग AppSettings संपत्ति का समर्थन करता है, जो आपको कॉन्फ़िगरेशन की appSettings अनुभाग से रीडिंग सेटिंग जारी रखने की अनुमति देता है। उसी तरह जैसे .NET 1.x समर्थित है।

app.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="keyName" value="anything, as a string"/>
    <add key="keyNames" value="123"/>
    <add key="keyNames" value="234"/>
  </appSettings>
</configuration>

Program.cs

using System;
using System.Configuration;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            string keyValue = ConfigurationManager.AppSettings["keyName"];
            Debug.Assert("anything, as a string".Equals(keyValue));

            var twoKeys = ConfigurationManager.AppSettings["keyNames"];
            Debug.Assert("234".Equals(twoKeys));

            Console.ReadKey();
        }
    }
}

विजुअल स्टूडियो से दृढ़ता से टाइप किए गए एप्लिकेशन और उपयोगकर्ता सेटिंग्स का परिचय समर्थन करता है

विजुअल स्टूडियो उपयोगकर्ता और एप्लिकेशन सेटिंग्स को प्रबंधित करने में मदद करता है। इस दृष्टिकोण का उपयोग कॉन्फ़िगरेशन फ़ाइल के appSettings अनुभाग का उपयोग करने पर इन लाभों है।

  1. सेटिंग्स को दृढ़ता से टाइप किया जा सकता है। किसी भी प्रकार को क्रमबद्ध किया जा सकता है, जिसका उपयोग सेटिंग्स मान के लिए किया जा सकता है।

  2. एप्लिकेशन सेटिंग्स को आसानी से उपयोगकर्ता सेटिंग्स से अलग किया जा सकता है। अनुप्रयोग सेटिंग्स को एकल कॉन्फ़िगरेशन फ़ाइल में संग्रहीत किया जाता है: web.config वेब साइटों और वेब अनुप्रयोगों के लिए, और app.config, जिसका नाम विधानसभा .exe.config है, जहां असेंबली निष्पादन योग्य का नाम है। उपयोगकर्ता सेटिंग्स (वेब परियोजनाओं द्वारा उपयोग नहीं की जाती हैं) को उपयोगकर्ता के अनुप्रयोग डेटा फ़ोल्डर में एक user.config फ़ाइल में संग्रहीत किया जाता है (जो ऑपरेटिंग सिस्टम संस्करण के साथ भिन्न होता है)।

  3. कक्षा पुस्तकालयों से अनुप्रयोग सेटिंग्स को नाम टकराव के जोखिम के बिना एकल कॉन्फ़िगरेशन फ़ाइल में जोड़ा जा सकता है, क्योंकि प्रत्येक वर्ग पुस्तकालय का अपना कस्टम सेटिंग्स अनुभाग हो सकता है।

अधिकांश प्रोजेक्ट प्रकारों में, प्रोजेक्ट गुण डिज़ाइनर के पास एक सेटिंग टैब होता है जो कस्टम एप्लिकेशन और उपयोगकर्ता सेटिंग्स बनाने के लिए शुरुआती बिंदु होता है। प्रारंभ में, डिफ़ॉल्ट सेटिंग फ़ाइल बनाने के लिए एकल लिंक के साथ सेटिंग्स टैब रिक्त होगा। इन परिवर्तनों के लिंक परिणामों पर क्लिक करना:

  1. यदि कॉन्फ़िगरेशन फ़ाइल ( app.config या web.config ) प्रोजेक्ट के लिए मौजूद नहीं है, तो एक बनाया जाएगा।

  2. सेटिंग्स टैब को एक ग्रिड नियंत्रण से बदल दिया जाएगा जो आपको व्यक्तिगत सेटिंग्स प्रविष्टियों को बनाने, संपादित करने और हटाने में सक्षम बनाता है।

  3. समाधान एक्सप्लोरर में, एक Settings.settings आइटम गुण विशेष फ़ोल्डर के तहत जोड़ा जाता है। इस आइटम को खोलने पर सेटिंग टैब खुल जाएगा।

  4. प्रोजेक्ट फ़ोल्डर में Properties फ़ोल्डर के तहत एक नई आंशिक वर्ग के साथ एक नई फ़ाइल जोड़ी गई है। इस नई फ़ाइल का नाम Settings.Designer.__ (.cs, .vb, आदि) है, और वर्ग का नाम Settings । वर्ग कोड-जनरेट किया गया है, इसलिए इसे संपादित नहीं किया जाना चाहिए, लेकिन वर्ग एक आंशिक वर्ग है, इसलिए आप अतिरिक्त सदस्यों को एक अलग फ़ाइल में डालकर कक्षा का विस्तार कर सकते हैं। इसके अलावा, वर्ग को सिंगलटन पैटर्न का उपयोग करके कार्यान्वित किया जाता है, जो Default नाम की संपत्ति के साथ सिंगलटन उदाहरण को उजागर करता है।

जैसा कि आप सेटिंग टैब में प्रत्येक नई प्रविष्टि जोड़ते हैं, Visual Studio इन दो चीजों को करता है:

  1. कॉन्फ़िगरेशन फ़ाइल में सेटिंग को सेटिंग्स वर्ग द्वारा प्रबंधित किए जाने वाले कस्टम कॉन्फ़िगरेशन अनुभाग में सहेजता है।

  2. सेटिंग टैब से चयनित विशिष्ट प्रकार में सेटिंग को पढ़ने, लिखने और प्रस्तुत करने के लिए सेटिंग वर्ग में एक नया सदस्य बनाता है।

कॉन्फ़िगरेशन फ़ाइल के कस्टम अनुभाग से दृढ़ता से टाइप की गई सेटिंग्स पढ़ना

एक नए सेटिंग वर्ग और कस्टम कॉन्फ़िगरेशन अनुभाग से शुरू:

प्रोजेक्ट गुण डिज़ाइनर का सेटिंग टैब

उदाहरण टाइमआउट का उपयोग करते हुए एक एप्लिकेशन सेटिंग जोड़ें, समय System.Timespan का उपयोग करके, और 1 मिनट के लिए मान सेट करें:

उदाहरण टाइमआउट एप्लिकेशन सेटिंग को जोड़ते समय सेटिंग्स टैब

प्रोजेक्ट गुण सहेजें, जो सेटिंग्स टैब प्रविष्टियों को बचाता है, साथ ही कस्टम सेटिंग्स वर्ग को फिर से बनाता है और प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइल को अपडेट करता है।

कोड से सेटिंग का उपयोग करें (C #):

Program.cs

using System;
using System.Diagnostics;
using ConsoleApplication1.Properties;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            TimeSpan exampleTimeout = Settings.Default.ExampleTimeout;
            Debug.Assert(TimeSpan.FromMinutes(1).Equals(exampleTimeout));

            Console.ReadKey();
        }
    }
}

गुप्त रखना

प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइल में देखें कि एप्लिकेशन सेटिंग प्रविष्टि कैसे बनाई गई है:

app.config (विजुअल स्टूडियो इसे स्वचालित रूप से अपडेट करता है)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="ConsoleApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <appSettings />
  <applicationSettings>
    <ConsoleApplication1.Properties.Settings>
      <setting name="ExampleTimeout" serializeAs="String">
        <value>00:01:00</value>
      </setting>
    </ConsoleApplication1.Properties.Settings>
  </applicationSettings>
</configuration>

ध्यान दें कि appSettings अनुभाग का उपयोग नहीं किया जाता है। applicationSettings अनुभाग में एक कस्टम नेमस्पेस-योग्य अनुभाग होता है जिसमें प्रत्येक प्रविष्टि के लिए एक setting तत्व होता है। कॉन्फ़िगरेशन फ़ाइल में मान का प्रकार संग्रहीत नहीं है; यह केवल Settings वर्ग द्वारा जाना जाता है।

यह कस्टम अनुभाग पढ़ने के लिए कैसे ConfigurationManager वर्ग का उपयोग करता है यह देखने के लिए Settings वर्ग में देखें।

Settings.designer.cs (C # परियोजनाओं के लिए)

...
    [global::System.Configuration.ApplicationScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Configuration.DefaultSettingValueAttribute("00:01:00")]
    public global::System.TimeSpan ExampleTimeout {
        get {
            return ((global::System.TimeSpan)(this["ExampleTimeout"]));
        }
    }
...

ध्यान दें कि DefaultSettingValueAttribute प्रोजेक्ट गुण डिज़ाइनर के सेटिंग टैब में दर्ज मूल्य को संग्रहीत करने के लिए बनाया गया था। यदि कॉन्फ़िगरेशन फ़ाइल से प्रविष्टि गायब है, तो इसके बजाय इस डिफ़ॉल्ट मान का उपयोग किया जाता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow