2013-04-24 10 views
6

TypeConverter.ConvertFromString() का उपयोग करना, मैं एक कस्टम प्रारूप जब एक स्ट्रिंग से डेटा पार्स करने देने की आवश्यकता (: "ddMMyyyy" या "MMMM dd, yyyy" उदाहरण के लिए, DateTime के साथ)।पार्सिंग कस्टम स्वरूपों में तार

public object ConvertFromString(ITypeDescriptorContext context, 
           CultureInfo culture, 
           string text); 

मैं MSDN के बारे में ITypeDescriptorContext पर जांच की गई:

TypeConverter.ConvertFromString() निम्नलिखित अधिभार नहीं है।

ITypeDescriptorContext इंटरफ़ेस एक घटक के बारे में प्रासंगिक जानकारी प्रदान करता है। ITypeDescriptorContext आमतौर पर डिज़ाइन-टाइम कंटेनर के बारे में जानकारी प्रदान करने के लिए डिज़ाइन समय पर उपयोग किया जाता है। यह इंटरफ़ेस आमतौर पर प्रकार रूपांतरण में उपयोग किया जाता है।

ऐसा लगता है कि मुझे उपयोग करने की आवश्यकता है लेकिन मुझे कहीं भी कोई उदाहरण नहीं मिल रहा है।

मैं निम्नलिखित सामान्य विधि का उपयोग कर रहा हूँ:

public T ParseValue<T>(string value) 
{ 
    return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value); 
} 

उदाहरण बुला कोड:

DateTime date = ParseValue<DateTime>("02062001"); 
decimal amount = ParseValue<decimal>("1.3423"); 

मैं इस ParseValue() विधि है जो हो सकता है में सामान्य स्वरूपण जानकारी किसी तरह का पार्स करने के लिए सक्षम होना चाहते हैं ConvertFromString() द्वारा उपयोग किया जाता है।

+0

@ बॉब- क्योंकि कभी-कभी मैं स्ट्रिंग से अन्य डेटा प्रकारों (केवल 'डेटटाइम') तक पार्स नहीं करूँगा। मुझे 'टाइपडिस्क्रिप्टर' का उपयोग करने की आवश्यकता है ताकि मैं रनटाइम पर उपयुक्त पार्सिंग तंत्र प्राप्त कर सकूं। – davenewza

+0

मैं उलझन में हूं, आप किसी डेटाटाइम को एक स्ट्रिंग के रूप में प्रदर्शित करने के लिए अन्य डेटा प्रकारों में परिवर्तित करना चाहते हैं? तो एक int की तरह? –

+0

@ बॉब- मैंने अपनी पोस्ट को और कोड उदाहरणों के साथ संपादित किया है। धन्यवाद – davenewza

उत्तर

2

आप अपना प्रारूप धारण कर कस्टम संस्कृतिइन्फो बना सकते हैं।

एक और समाधान कुछ सहायक विधि में रूपांतरण लपेटना होगा जो डेटटाइम का उपयोग करेगा। तिथियों के लिए पर्स और अन्य प्रकार के लिए टाइप कनवर्टर।

+0

मैंने यह माना है कि (मुझे decimals, नकारात्मक, इत्यादि को पार्स करते समय संख्या प्रारूपों को निर्दिष्ट करने की आवश्यकता होगी), लेकिन ऐसा लगता है कि एक डमी CultureInfo ऑब्जेक्ट बनाना है और कुछ प्रासंगिक संपत्ति को ओवरराइट करना है। और फिर वास्तव में 'ITypeDescriptorContext' क्या है? उत्तर के लिए धन्यवाद :) – davenewza

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