मैं अपनी एप्लिकेशन सेटिंग्स को प्रबंधित करने के लिए सी # और विजुअल स्टूडियो की "सेटिंग" सुविधा का उपयोग कर रहा हूं। बेशक, इन्हें एक्सएमएल द्वारा ओवरराइड किया जा सकता है।

हालांकि, मैं विजुअल स्टूडियो में सेट किए गए संकलन-समय डिफ़ॉल्ट को पुनर्प्राप्त करने का एक तरीका चाहता हूं

Properties.Settings.Defaults.MyProp

इसे हासिल नहीं करता - यह एक्सएमएल से जो कुछ भी उठाया जाता है उसे वापस कर देता है। विकास के दौरान "सेटिंग्स" पृष्ठ में जो कुछ भी टाइप किया गया था उसे पुनर्प्राप्त करने की गारंटी देने का कोई तरीका है?

संदर्भ यह है कि मेरी कुछ सेटिंग्स काफी विशिष्ट हैं और इसलिए मेरा एप्लिकेशन उन्हें यह सुनिश्चित करने के लिए मान्य करता है कि वे पैरामीटर के भीतर हैं, और यदि नहीं तो मैं डिफ़ॉल्ट रूप से विफल होने में सक्षम होना चाहता हूं।

0
Dan 8 जिंदा 2020, 23:22
क्या आपने Properties.Settings.Default.Reset() की कोशिश की है? या आप व्यक्तिगत संपत्ति रीसेट की तलाश कर रहे हैं?
 – 
Ron Beyer
8 जिंदा 2020, 23:24
हां, मैं इसके साथ व्यक्तिगत आधार पर कर सकता था
 – 
Dan
8 जिंदा 2020, 23:26
मेरा मानना ​​​​है कि जब भी उपयोगकर्ता स्कोप फ़ील्ड के लिए गुण xml फ़ाइल में कोई भी परिवर्तन सहेजा जाता है, तो यह स्थानीय ऐप्स फ़ोल्डर में सहेजा जाता है जबकि मूल अपरिवर्तित रहता है। क्या आप पूछ रहे हैं कि मूल एक्सएमएल कैसे पढ़ा जाए? साथ ही, यदि आपका ऐप पहले से ही पैरामीटर मान्य कर रहा है, तो डिफ़ॉल्ट कोड में संग्रहीत क्यों नहीं है?
 – 
SILENT
8 जिंदा 2020, 23:46
आपके पास एक एप्लिकेशन में एकाधिक सेटिंग्स फ़ाइलें हो सकती हैं। आप केवल Default एक का उपयोग कर रहे हैं। आप सेटिंग Provider (सेटिंग की Provider संपत्ति) के रूप में उपयोग करने के लिए एक वर्ग भी बना सकते हैं। एक कस्टम प्रदाता एकल सेटिंग को संभाल सकता है। आप अनुप्रयोग के दायरे में उपयोगकर्ता सेटिंग्स को भी मिरर कर सकते हैं। देखें कैसे करें: एप्लिकेशन बनाएं सेटिंग (और बाईं ओर संबंधित दस्तावेज़), एप्लिकेशन बनाना सेटिंग पोर्टेबल
 – 
Jimi
9 जिंदा 2020, 00:05

2 जवाब

ऐसा प्रतीत होता है कि संपत्ति का मूल, संकलन समय मूल्य प्राप्त करने का यही एकमात्र मार्ग है। यह शर्म की बात है कि यह दृढ़ता से टाइप नहीं किया गया है

Properties.Settings.Default.Properties["name"].DefaultValue as string;
0
Dan 9 जिंदा 2020, 00:02

Settings प्रकार केवल एक ऑटो-जेनरेटेड internal sealed partial class है, इसलिए ऐसा कोई कारण नहीं है कि आप Defaults नाम की एक नई static प्रॉपर्टी नहीं जोड़ सके, जिसने वही किया जो आप चाहते थे .

// In some file, perhaps called Settings.Defaults.cs?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace YourApplication.Properties
{
   internal sealed partial class Settings
   {
      public static SettingsDefaults Defaults
      {
         get { return _defaults; }
      }

      internal class SettingsDefaults
      {
         public int NumberBetween1And100
         {
            get
            {
               // Or just hardcode it and come here and change it if you change the default value.
               return (int)Settings.Default.Properties["NumberBetween1And100"].DefaultValue;
            }
         }
      }

      private static readonly SettingsDefaults _defaults = new SettingsDefaults();
   }
}

आप इसका उपयोग वैसे ही कर सकते हैं जैसे आपने अपने प्रश्न में वर्णित किया है: Properties.Settings.Defaults.NumberBetween1And100

यह सही नहीं है। उदाहरण के लिए, यदि आप सेटिंग डिज़ाइनर से कोई नई सेटिंग जोड़ते हैं, तो आपको इस फ़ाइल में आना और SettingsDefaults वर्ग में नई संपत्ति जोड़ना याद रखना होगा। साथ ही, Properties.Settings.Default और Properties.Settings.Defaults के नाम इतने मिलते-जुलते हैं कि यह बग का स्रोत होने की संभावना महसूस करता है।

0
Joshua Robinson 9 जिंदा 2020, 00:40