2009-07-13 14 views
7

को स्थानीयकृत करने के लिए प्रकार कनवर्टर का उपयोग कैसे करें मैं अपने अन्य प्रश्नों में से एक को this answer पढ़ने के बाद टाइप कन्वर्टर्स का उपयोग करने का तरीका समझने की कोशिश कर रहा हूं। लेकिन मुझे यकीन नहीं है कि मुझे काफी मिल रहा है ...सी #: एनम्स

मेरे विशेष मामले में मैं एक एनम सदस्य को एक स्थानीय स्ट्रिंग में एक स्थानीय स्ट्रिंग में "कन्वर्ट" करना चाहता हूं, जिसके आधार पर संसाधन स्ट्रिंग प्राप्त करना है। उदाहरण के लिए तो अगर मैं इस enum था:

public enum Severity 
{ 
    Critical, 
    High, 
    Medium, 
    Low 
} 

या इस:

public enum Color 
{ 
    Black = 0x0, 
    Red = 0x1, 
    Green = 0x2, 
    Blue = 0x4, 
    Cyan = Green | Blue, 
    Magenta = Red | Blue, 
    Yellow = Red | Green, 
    White = Red | Green | Blue, 
} 

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

उत्तर

6

टाइपकॉन्टर बनाने के लिए, बस एक वर्ग बनाएं जो टाइपकॉन्टर से प्राप्त होता है। फिर आप अपनी कक्षा को टैग करने के लिए TypeConverterAttribute का उपयोग करते हैं, ताकि जब भी कोई आपकी कक्षा में एक कन्वर्ट ऑपरेशन करने का प्रयास करता है, तो आपका टाइप कनवर्टर लागू होता है।

एक बार जब आप टाइपकॉन्टर से प्राप्त होते हैं, तो आपको अपनी कुछ विधियों को ओवरराइड करना चाहिए जो आप चाहते हैं। आप शायद ConvertFrom(), ConvertTo(), और ConvertToString() से शुरुआत करना चाहते हैं - यही वह जगह है जहां आप अपने तारों के अपने स्थानीय संस्करण को खींचने के लिए तर्क लागू करेंगे।

निश्चित रूप से
var foo = TypeDescriptor.GetConverter(typeof(T)); 
var mystring = foo.ConvertToString(myObject)); 

MSDN TypeConverter कार्यान्वयन के documentation and some examples है:

अपने TypeConverter का उपयोग करने के लिए आपको कुछ इस तरह कोड होगा।

+1

लेकिन आप रूपांतरण कैसे करते हैं? – Svish

+0

मेरा जवाब अपडेट किया गया। – womp

1

मेरा मानना ​​है कि यह पहले से ही How do I override ToString in C# enums?

इसके अलावा में उत्तर दिया गया है, तो आप ToDisplayString की तरह एक नाम के साथ enums के लिए एक विस्तार विधि के साथ इस गठबंधन कर सकते हैं।

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