2010-07-29 20 views
10

मेरे पास एकाधिक .NET असेंबली हैं जो सभी को सामान्य उपयोगकर्ता सेटिंग्स, जैसे प्राथमिकताएं, उपयोगकर्ता नाम इत्यादि साझा करने की आवश्यकता होती है। एक एक WPF एप्लिकेशन है, दूसरा एक कंसोल एप्लिकेशन है, और तीसरा एक कार्यालय जोड़ें -इन। ये सभी सेटिंग्स उपयोगकर्ता-स्कोप हैं।अनुप्रयोगों के बीच सेटिंग साझा करना

केवल WPF एप्लिकेशन को सेटिंग्स बदलने में सक्षम होना चाहिए। बाकी बस उन्हें पढ़ें।

आदर्श रूप से, मैं .NET कॉन्फ़िगरेशन ढांचे का उपयोग करना चाहता हूं। मुझे यकीन नहीं है कि यह कैसे करना है। यदि मैं WPF एप्लिकेशन में सेटिंग्स जोड़ता हूं, तो अन्य एप्लिकेशन user.config फ़ाइल को कैसे ढूंढ सकते हैं?

क्या कक्षा पुस्तकालय बनाना और IsolatedFileStorage का उपयोग करना और मेरी सेटिंग्स को क्रमबद्ध करना आसान है?

किसी भी सलाह की सराहना की जाएगी।

उत्तर

0

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

1

आप ApplicationSettingsBase विरासत में अपने कस्टम सेटिंग्स वर्ग को कार्यान्वित कर सकते हैं। एक अच्छी शुरुआत के रूप में, आप एक नमूना प्रोजेक्ट में डिफ़ॉल्ट उपयोगकर्ता सेटिंग्स फ़ाइल जोड़ सकते हैं (प्रोजेक्ट पर राइट क्लिक करें ->Properties ->Settings ->This project does not contain a default settings file. Click here to create one.)। उपयोगकर्ता-दायरे सेटिंग जोड़ें और डिजाइनर-उत्पन्न Settings.Designer.cs फ़ाइल की संरचना की जांच:

namespace ConsoleApplication1.Properties { 


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 

     private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 

     public static Settings Default { 
      get { 
       return defaultInstance; 
      } 
     } 

     [global::System.Configuration.UserScopedSettingAttribute()] 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
     [global::System.Configuration.DefaultSettingValueAttribute("John Doe")] 
     public string Name { 
      get { 
       return ((string)(this["Name"])); 
      } 
      set { 
       this["Name"] = value; 
      } 
     } 
    } 
} 

अपने कस्टम कार्यान्वयन में, आप, डिजाइनर द्वारा जेनरेट की पहुँच संशोधक तक ही सीमित नहीं किया जाएगा, ताकि आप कर सकते हैं सेटिंग्स वर्ग को आंतरिक सेटर्स के साथ आंतरिक के रूप में कार्यान्वित करें, केवल आवश्यक असेंबली के लिए दृश्यमान हों, या जो कुछ भी आपकी आवश्यकताओं के अनुरूप हो।

बेशक, आप हमेशा अपने कस्टम सीरियलाइज/deserialize तंत्र को कार्यान्वित कर सकते हैं, लेकिन आप एप्लीकेशनसेटिंगबेस के अपग्रेड, रीलोड और रीसेट विधियों द्वारा प्रदान की गई funcionality खो देंगे। यदि आपको इनमें से किसी की आवश्यकता नहीं है, तो यह क्लीनर दृष्टिकोण हो सकता है।

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