का उपयोग कर ऑब्जेक्ट ऐरे को किसी अन्य प्रकार सरणी में कनवर्ट करें मेरे पास ऑब्जेक्ट सरणी है और मैं इसे एक विशिष्ट प्रकार सरणी में रूपांतरित करना चाहता हूं। मेरे पास इसे बदलने के लिए प्रकार है जिसमें मुझे रन टाइम पर मिलता है। लेकिन मुझे वास्तविक रूपांतरण करने में कोई समस्या है।प्रतिबिंब
अगर मैं Convert.ChangeType उपयोग करते हैं, मैं त्रुटि है कि वस्तु IConvertible को लागू करना चाहिए मिल
Array.ConvertAll आधारित टेम्पलेट है और आवश्यकता है कि मैं एक टेम्पलेट जो मैं केवल रन टाइम पर पता है गंतव्य प्रकार पारित । मैंने इस विधि को कॉल करने के लिए प्रतिबिंब का उपयोग करने की भी कोशिश की लेकिन मैं लैम्बडा अभिव्यक्ति को MethodInfo.Invoke विधि के तर्क के रूप में पास नहीं कर सकता।
कोई विचार?
सही मैं जिसके बाद काम नहीं कर रहा है:
Type convertTo = GetFinalType();
Object[] objArr = GetObjectArray();
var arr = Array.ConvertAll(objArr,elem=> Convert.ChangeType(elem,convertTo));
यह कैसे है क्या एक अपवाद फेंक दिया गया है? –
@ मार्क: * "मुझे त्रुटि मिलती है कि ऑब्जेक्ट को आईकोनवर्टेबल लागू करना चाहिए" * – cdhowie
लाइन var arr = Array.ConvertAll (objArr, elem => कनवर्ट करें। चेंजटाइप (elem, convertTo)); संकलित नहीं करता है क्योंकि इसे लक्ष्य प्रकार को टेम्पलेट के रूप में चाहिए ऐरे। कनवर्ट करें (objArr, elem => कनवर्ट करें। चेंजटाइप (elem, convertTo)); .. मेरे पास रनटाइम पर केवल टी 2 है –
shake