मेरे पास एक वर्ग के कुछ चर होते हैं, और प्रत्येक पंक्ति एक जोड़ी है: चर, मूल्य। मैं प्रतिबिंब का उपयोग कर रनटाइम (ए-ला XmlSerializer
) पर लोड करने का एक तरीका ढूंढ रहा हूं।सी # पार्स स्ट्रिंग रनटाइम पर ज्ञात टाइप करने के लिए
string
को Type
पर केवल रनटाइम पर जाने के लिए कोई तरीका है? क्योंकि PropertyType
वर्ग Type
जो एक सामान्य Parse()
विधि नहीं है की है
निम्नलिखित, एक इच्छाधारी कोड नमूना जहां आखिरी पंक्ति (pi.SetValue()
साथ सही नहीं है।
using (var sr = new StreamReader(settingsFileName))
{
String line;
while ((line = sr.ReadLine()) != null)
{
String[] configValueStrs = line.Trim().Split(seps);
PropertyInfo pi = configurableProperties
.Single(p => p.Name == configValueStrs[0].Trim());
//How do I manage this?
pi.SetValue(this, pi.PropertyType.Parse(configValueStrs[1].Trim()), null);
}
}
प्रासंगिक के सभी के बाद से
चर Ints, डबल्स, तार या Booleans, एक अंतिम उपाय के रूप में कर रहे हैं, मैं प्रकार पर स्विच और इसी ToType()
विधि का उपयोग कर सकते हैं, लेकिन मुझे यकीन है कि वहाँ एक और अधिक सुरुचिपूर्ण समाधान है।
चेक इस: http: //chrismarinos.com/default-typeconverters-and-objects/ इसके अलावा अपने अनुभव में, डिफ़ॉल्ट कार्यान्वयन कुछ भी नहीं कर सकता है। – Peter