2012-06-28 15 views
5

यह संकलित नहीं करता है, लेकिन मैं जो करने की कोशिश कर रहा हूं वह बस 'टी' पर ऑब्जेक्ट कास्टिंग कर रहा है जो फ़ंक्शन को पास किया जाता है?किसी ऑब्जेक्ट को किसी फ़ंक्शन में पास करने के लिए कैसे डाला जाए?

public void My_Func(Object input, Type t) 
{ 
    (t)object ab = TypeDescriptor.GetConverter(t).ConvertFromString(input.ToString()); 
} 
+1

क्या मैं आपको सही ढंग से समझता हूं कि आप इनपुट ऑब्जेक्ट को दिए गए टाइप टी पर डालना चाहते हैं? यदि इनपुट प्रकार टी नहीं है तो क्या होगा? – FrankE

+0

@ फ्रैंक - फ़ंक्शन इस तरह से काम करेगा कि जो कभी भी इसका उपयोग करेगा, उसे फ़ंक्शन में सही प्रकार दर्ज करने के बारे में पता चलेगा, मैं इसे अपनी ज़िम्मेदारी पर लेता हूं! – BornToCode

+0

आप ऑब्जेक्ट के साथ क्या करना चाहते हैं? हो सकता है कि आप एक सामान्य कार्य 'सार्वजनिक शून्य My_Func (टी इनपुट)' का उपयोग करना चाहते हैं? – ekholm

उत्तर

13

आप की तरह कुछ कर सकता है:

object ab = Convert.Changetype(input, t); 

तथापि, यह लगता है कि आप एक जोरदार टाइप ढंग है, जो आप तो जेनरिक का उपयोग करके केवल कर सकते हैं में ab उपयोग करना चाहते हैं:

public void My_Func<T>(Object input) 
{ 
    T ab = (T)Convert.ChangeType(input, typeof(T)); 
} 
+0

'कनवर्ट। चेंजटाइप' के बारे में नहीं पता था, धन्यवाद। –

+0

'ऑब्जेक्ट एबी = कन्वर्ट। चेंजटाइप (इनपुट, टी);' और 'ऑब्जेक्ट एबी = इनपुट'' के बीच क्या अंतर है? – ekholm

+0

@ekholm 'object ab =" 01/01/2008 "' बनाम 'ऑब्जेक्ट एबी = कन्वर्ट। चेंजटाइप ("01/01/2008", टाइपऑफ (डेटटाइम)) ' –

1
public void My_Func(Object input, Type t) 
{ 
    object test = new object(); 
    test = Convert.ChangeType(test, t); 
    test = TypeDescriptor.GetConverter(t).ConvertFromString(input.ToString()); 
} 
संबंधित मुद्दे