2009-06-04 6 views
10

मेरी सेटिंग्स फ़ाइल में, मुझे एक सेटिंग चाहिए जो कि टाइप सूची (माईक्लास) की है .... मुझे नेट पर कुछ भी नहीं मिल रहा है जो ऐसा करता है। क्या यह संभव है?क्या आपके पास अपनी सेटिंग्स फ़ाइल में एक सामान्य सूची (टी) हो सकती है?

+1

"मेरी सेटिंग्स फ़ाइल में" – Bob

+0

का क्या मतलब है? क्या आप टी से विरासत में मिश्रित टाइपिंग करने की योजना बना रहे हैं? –

+1

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

उत्तर

8

मैं तुम्हें उपयोगकर्ता सेटिंग्स के बारे में बात कर रहे हैं मान ...

हालांकि यदि आप अपने खुद के गैर सामान्य प्रकार है जो (MyClass की सूची से विरासत बनाने मैं, आप एक सामान्य प्रकार निर्दिष्ट कर सकते हैं पता नहीं है), तो आप इस प्रकार को बिना किसी समस्या के अपने उपयोगकर्ता सेटिंग के रूप में निर्दिष्ट कर सकते हैं।

कुछ की तरह:

Public Class MyClassList 
    Inherits List(Of MyClass) 

End Class 

तो फिर तुम MyClassList के लिए ब्राउज़ करने के लिए सक्षम होना चाहिए।

+1

यही मेरा सहकर्मी काम कर रहा है, tks। – Codezy

-1

हां यह संभव है, बस टाइप करें < कुछ प्रकार टाइप करें > मैन्युअल रूप से टाइप फ़ील्ड में, इसे काम करना चाहिए।

+0

आप इसे कहां टाइप करते हैं? सेटिंग टैब में प्रोजेक्ट के गुणों में आप मैन्युअल रूप से फ़ील्ड प्रकार नहीं जोड़ सकते हैं। आपको पूर्व निर्धारित प्रकारों में से एक जोड़ना होगा या किसी प्रकार के लिए ब्राउज़ करना होगा। (एक वीबी परियोजना के लिए) –

+0

हाँ, आपको एक प्रकार के लिए ब्राउज़ करना होगा। – Codezy

+0

एमएच, मुझे बिल्कुल याद नहीं है कि मैंने यह कैसे किया, लेकिन किसी भी तरह से मैं एक सामान्य प्रकार दर्ज कर सकता था। यदि यह काम नहीं करता है, तो मैं एक क्रमबद्ध रैपर बनाउंगा जो सामान्य सूची से प्राप्त होता है। कम से कम यह काम करना चाहिए। – Enyra

0

आप अपने List<T> को एक स्ट्रिंग में क्रमबद्ध कर सकते हैं, और इसे अपनी सेटिंग्स फ़ाइल में डाल सकते हैं।

क्या यह काम करेगा?

12

मैं मानता हूं कि मेटा-नाइट का विरासत समाधान सबसे अच्छा है, हालांकि सेटिंग XML फ़ाइल को मैन्युअल रूप से संपादित करना संभव है। समाधान एक्सप्लोरर में: समाधान> प्रोजेक्ट> गुण> सेटिंग्स.सेटिंग्स पर जाएं। सेटिंग्स.सेटिंग पर राइट-क्लिक करें और "इसके साथ खोलें" चुनें। "एक्सएमएल (टेक्स्ट) संपादक" का चयन करें। फिर <Settings> के अंदर निम्नलिखित डालें:

<Setting Name="TestGenericList" Type="System.Collections.Generic.List&lt;int&gt;" Scope="User"> 
    <Value Profile="(Default)" /> 
</Setting> 

सहेजें, और यह काम करता है।

दुर्भाग्य से यह दो या दो से अधिक प्रकार की आवश्यकता वाले सामान्य प्रकारों के साथ काम नहीं करता है, क्योंकि उस विशेषता में अल्पविराम की अनुमति नहीं है। यहां तक ​​कि इकाई-एन्कोडिंग भी (&#x002C;) मदद नहीं की। इस के लिए एक समाधान उपलब्ध कराने में

<Setting Name="TestGenericDictionary" Type="System.Collections.Generic.Dictionary&lt;string&#x002C;string&gt;" Scope="User"> 
    <Value Profile="(Default)" /> 
</Setting> 
+0

हालांकि सेटिंग के लिए UI वास्तव में & # x002C का उपयोग करते समय अपवाद फेंक देता है; , कक्षा अभी भी बनाई गई है। इसका मतलब यह है कि आपके द्वारा डाली गई अंतिम कुछ चीज़ें उसमें उपयोग की जानी चाहिए। – Will

+0

दुर्भाग्यवश, मैन्युअल दृष्टिकोण VB.NET –

+0

में काम नहीं करता है '' 'System.Collections.Generic.Dictionary'2 [System.String, System.String]' '' का उपयोग करके "अवैध वर्ण" त्रुटि संदेश से बचना संभव है। बजाय। दुर्भाग्यवश यह समाधान नहीं है क्योंकि परिवर्तन जारी नहीं हैं (शब्दकोश धारावाहिक नहीं है)। '' 'System.Collections.Generic.List'1 पर स्विचिंग [System.Collections.Generic.KeyValuePair'2 [System.String, System.String]]' '' मदद नहीं करता है, क्योंकि 'KeyValuePair'' serializable नहीं है ] (https://blogs.msdn.microsoft.com/seshadripv/2005/11/02/serializing-an-object-of-the-keyvaluepair-generic-class/) या तो! – Vlad

3

मैं देर से खेल के लिए एक छोटे से हो सकता है:

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

मेरे मामले में (वीबीएनईटी का उपयोग करके), मैं माइक्रेटिंग में Dictionary(Of String, String) स्टोर करना चाहता था, सिवाय इसके कि शब्दकोश को बाइनरी के रूप में क्रमबद्ध किया जाना था क्योंकि यह आसानी से एक्सएमएल को क्रमबद्ध नहीं करता है। मैं डिजाइनर से सेटिंग संपत्ति हटा दिया, और उसके बाद निम्न कोड के अंदर के साथ अपने प्रोजेक्ट के लिए फ़ाइल Settings.Extended.vb कहा:

'** Keeping My.Settings.FormLayouts out of Settings.Designer.vb so that this custom code is not overwritten by Visual Studio.' 

Namespace My 
    Partial Friend NotInheritable Class MySettings 
     <Configuration.UserScopedSettingAttribute(), _ 
     DebuggerNonUserCodeAttribute(), _ 
     Configuration.SettingsSerializeAs(Configuration.SettingsSerializeAs.Binary)> _ 
     Public Property FormLayouts() As Dictionary(Of String, String) 
     Get 
      Return CType(Me("FormLayouts"), Dictionary(Of String, String)) 
     End Get 
     Set(ByVal value As Dictionary(Of String, String)) 
      Me("FormLayouts") = value 
     End Set 
     End Property 
    End Class 
End Namespace 

FormLayouts संपत्ति अभी भी My.Settings का हिस्सा है, और लोड किया जाएगा और सामान्य रूप से सहेजा गया है, लेकिन एप्लिकेशन के सेटिंग्स डिज़ाइनर में और सेटिंग्स जोड़ना ऊपर दिए गए कोड को ओवरराइट नहीं करेगा।

+1

हाहा थोड़ा देर हो चुकी है (3 साल)। अब भी नेट में नहीं। फिर भी, मुझे यकीन है कि यह इच्छा किसी की मदद करेगी! – Codezy

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

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