2009-03-02 11 views
9

के साथ सेटिंग्स का उपयोग कर मैं अपने .NET प्रोजेक्ट में सेटिंग्स क्लास का उपयोग कर रहा हूं। मैं संपादक में ध्यान देता हूं कि सेटिंग्स वर्ग में अलग-अलग गुणों के प्रकार के रूप में उपयोग करने के लिए केवल कुछ प्रकार उपलब्ध हैं। क्या होगा यदि मैं ऐसी संपत्ति बनाना चाहता था जो मेरे कोड से एक गणना या उदाहरण के लिए एक सामान्य संग्रह था? मैं इसे कैसे कार्यान्वित करूं?कॉम्प्लेक्स प्रकार

मुझे लगता है कि मैं इसे आंशिक वर्ग तंत्र का उपयोग करके एक अलग फ़ाइल में कर सकता हूं (चूंकि सेटिंग्स को आंशिक वर्ग के रूप में पहले ही परिभाषित किया गया है) लेकिन मैं देखना चाहता हूं कि कोई इसके साथ सहमत है और यदि कोई तरीका हो संपादक के भीतर ऐसा करने के लिए।

+0

मुझे आपके प्रश्न को सही ढंग से समझने के लिए निश्चित नहीं है, ज्यादातर संपादक के बारे में हिस्सा और "कुछ प्रकारों को प्रकार के रूप में उपयोग करने के लिए उपलब्ध हैं", क्या आप इसे स्पष्ट कर सकते हैं या इसे फिर से लिख सकते हैं? – mbillard

+0

ठीक है अगर आप अपनी प्रोजेक्ट में सेटिंग्स.सेटिंग फ़ाइल बनाते हैं तो एक संपादक होता है जिसका उपयोग आप सेटिंग के डेटाटाइप, नाम इत्यादि को सेट करने के लिए कर सकते हैं। आप ट्रीलिस्ट बॉक्स से सेटिंग के लिए डेटाटाइप चुनते हैं। वह ट्रीलिस्ट बॉक्स केवल कुछ प्रकारों का संदर्भ देता है। मेरी असेंबली में प्रकार संदर्भ नहीं हैं। –

+0

संदर्भित * संदर्भ नहीं ... :) –

उत्तर

10

जटिल/उपयोगकर्ता-परिभाषित प्रकार की पसंद जोड़ने के लिए एक नई "सेटिंग्स" फ़ाइल बनाएं। यहां एक एनम के लिए कैसे है।

चरण 1। एक सेटिंग फ़ाइल

alt text

चरण 2 बनाएँ। प्रकार

alt text

चरण 3 के लिए ब्राउज़ करें। प्रकार का चयन करें (Namespace.TypeName)

alt text

चरण 4। टा दा - हो गया

alt text

+0

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

+0

सेटिंग्स फ़ाइल मूल रूप से आपको इच्छित किसी भी प्रकार को वापस करने देती है, जहां तक ​​मुझे पता है। लेकिन जेनेरिक सूचियों द्वारा, आपका मतलब सामान्य संग्रह है? – Sung

+0

हां, जेनेरिक संग्रह (हालांकि मेरे मामले में मैं एक सूची चाहता था) –

0

आंशिक वर्ग के हिस्से के रूप में इसे एक अलग फ़ाइल में करना पूरी तरह से स्वीकार्य है।

0

यदि आप कॉन्फ़िगरेशन फ़ाइलों के माध्यम से जटिल वस्तुओं को पॉप्युलेट करने में सक्षम होना चाहते हैं, तो मैं कुछ निर्भरता इंजेक्शन फ्रेमवर्क एसए का उपयोग करने का सुझाव दूंगा। Spring.Net।

4

उस सूची में दिखाने के लिए एक कस्टम वर्ग पाने के लिए, यकीन है कि के रूप में यह में से एक विकल्प का निर्माण कर रहा है यह एक डिफ़ॉल्ट निर्माता है बनाते हैं। मैंने यह कठिन तरीका

2

जेफरी की टिप्पणी/प्रश्न का उत्तर देने के लिए कि जेनेरिक सूचियों को सेटिंग्स फ़ाइल में संभव है या नहीं, जवाब हाँ है। आपको बस सेटिंग्स xml फ़ाइल को मैन्युअल रूप से संपादित करना होगा। उदाहरण के लिए, अगर मैं निम्नलिखित वर्ग है:

public class UrlAlias 
{ 
    public string Name { get; set; } 
    public string BaseUrl { get; set; } 
} 

मैं अपनी सेटिंग फ़ाइल पर राइट क्लिक करके इनमें से एक सूची बना सकते हैं और चयन के साथ खोलें कर सकते हैं ...

फिर एक्सएमएल/पाठ संपादक चुनते हैं, और

Type="System.Collections.Generic.List`1[MyProject.SomeNamespace.UrlAlias]" 

पूर्ण सेटिंग्स एक्सएमएल दिखाई देगा::

<?xml version='1.0' encoding='utf-8'?> 
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MyProject.Properties" GeneratedClassName="Settings"> 
<Profiles /> 
    <Settings> 
    <Setting Name="UrlAliases" Type="System.Collections.Generic.List`1[CommonAddin.Data.DataSource.UrlAlias]" Scope="User"> 
     <Value Profile="(Default)"></Value> 
    </Setting> 
    </Settings> 
</SettingsFile> 
पूरी तरह से योग्य वर्ग के नाम करने के लिए "प्रकार" मूल्य, यानी सेट

एक बार ऐसा करने के बाद, आपके द्वारा बनाए गए कस्टम सेटिंग्स ऑब्जेक्ट की एक उचित कॉन्फ़िगर की गई सूची होनी चाहिए।

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