2009-08-09 18 views
5

क्या एक स्ट्रिंग वैरिएबल द्वारा कक्षा को प्रारंभ करना संभव है? मेरे पास PHP में कोड है।सी # में स्ट्रिंग वैरिएबल द्वारा एक वर्ग शुरू करें?

<?php 
    $classname = "test"; 

    $oTest = new $classname(); 

    class test{ 
    } 
?> 

मैं इसे सी # में कैसे कर सकता हूं?

+0

मुझे लगता है कि जेरेडपार आपके प्रश्न का उत्तर देता है, हालांकि आपको इसकी आवश्यकता क्यों है? आप क्या हल करने की कोशिश कर रहे हैं? – Zyphrax

उत्तर

19
System.Activator.CreateInstance(Type.GetType(className)) 

समस्या यह है कि सी # 3.0 एक स्थाई रूप से टाइप की गई भाषा है। आप लौटे ऑब्जेक्ट पर केवल यादृच्छिक तरीकों को कॉल नहीं कर सकते हैं। आपके पास कक्षाएं हो सकती हैं जिन्हें आप कुछ सामान्य इंटरफ़ेस को कार्यान्वित कर सकते हैं और उपर्युक्त अभिव्यक्ति का परिणाम इंटरफ़ेस में डाल सकते हैं या मैन्युअल रूप से लौटाए गए ऑब्जेक्ट पर कॉल विधियों के प्रति प्रतिबिंब का उपयोग कर सकते हैं।

+1

उत्तर देखकर मुझे प्रश्न समझने में मदद मिली। +1 –

+0

"सी # द्वारा आपका क्या मतलब है, संस्करण 3.0 के रूप में एक स्थिर टाइप की गई भाषा है"। इससे पता चलता है कि यह हाल ही में एक स्थिर रूप से टाइप की गई भाषा बन गई है। यह हमेशा रहा है। सी # 4.0 में नया गतिशील कीवर्ड है जिसका अर्थ है कि सी # वांछित होने पर गतिशील भाषाओं के कुछ पहलुओं को प्राप्त करेगा। –

+0

कॉलिन: मैंने इसे अस्पष्टता से लिखा होगा। फिक्स्ड। –

5

आप समान परिणाम प्राप्त करने के लिए Activator.CreateInstance विधि का उपयोग कर सकते हैं। लेकिन तुम प्रकार

var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test"); 
1

आप Activator.CreateInstance उपयोग कर सकते हैं की पूरी तरह से योग्य नाम के साथ-विधानसभा नाम प्रदान करना होगा। विभिन्न अधिभारों के लिए प्रलेखन यहां है: http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx

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