2013-02-27 23 views
16

से टाइप कैसे प्राप्त करें मेरे पास कई ऑब्जेक्ट हैं, जिनमें से प्रत्येक में इसके प्रकार के बारे में स्ट्रिंग में जानकारी है।
चाहते:टाइपऑफ: स्ट्रिंग

string stringObjectType = "DateTime"; 

जबकि चल रहा है, मेरे पास कोई वस्तु ही है।
तो मैं यह typeof (object)

परीक्षण नहीं कर सकते मैं कैसे प्राप्त कर सकते हैं द्वारा वस्तु के प्रकार के चल रहे हैं, जबकि:

typeof (stringObjectType) 
+0

क्या आपके पास 'डेटटाइम' या 'सिस्टम। डेटटाइम' के रूप में तार होंगे? –

+0

क्या आपको यह चाहिए? http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx – Youssef

+0

सटीक होने के लिए, आप 'टाइपऑफ (ऑब्जेक्ट)' नहीं लिख सकते हैं। आप केवल कक्षा का नाम पास कर सकते हैं। इसके बजाय 'object.GetType' का उपयोग करें। बस केह रहा हू। – RoadBump

उत्तर

16
try 
{ 
    // Get the type of a specified class. 
    Type myType1 = Type.GetType("System.DateTime"); 
    Console.WriteLine("The full name is {0}.", myType1.FullName); 
    // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException. 
    Type myType2 = Type.GetType("NoneSuch", true); 
    Console.WriteLine("The full name is {0}.", myType2.FullName); 
} 
catch(TypeLoadException e) 
{ 
    Console.WriteLine(e.Message); 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e.Message); 
} 

देखें Type.GetType(string) on MSDN

+0

हाँ, क्यों, उसका कोड सही है – animaonline

+2

जबकि यह कोड सही है। क्या यह उनके प्रश्न का उत्तर देता है? स्ट्रिंग स्ट्रिंगऑब्जेक्ट टाइप = "डेटटाइम"; यहां सही प्रकार नहीं मिलेगा। – Evelie

+0

मेरा मानना ​​है कि यह केवल एक उदाहरण था – animaonline

18

आप Type.GetType() उपयोग कर सकते हैं एक प्रकार प्राप्त करने के लिए इसके स्ट्रिंग नाम से। तो आप कर सकते हैं:

Type DateType = Type.GetType("System.DateTime"); 

आप "डेटटाइम" का उपयोग नहीं कर सकते क्योंकि यह प्रकार का नाम नहीं है। यदि आप ऐसा करते हैं और नाम गलत है (यह अस्तित्व में नहीं है) तो यह एक अपवाद फेंक देगा। तो आपको इसके चारों ओर एक कोशिश/पकड़ की आवश्यकता होगी।

आप ऐसा करके किसी भी वस्तु के लिए उचित प्रकार का नाम प्राप्त कर सकते हैं:

string TypeName = SomeObject.GetType().FullName; 

आप अस्पष्ट या अधूरा नाम का उपयोग करने की जरूरत है, तो आप एक मजेदार समय प्रतिबिंब के साथ चारों ओर खिलवाड़ करने जा रहे हैं। असंभव नहीं है, लेकिन निश्चित रूप से एक दर्द है।

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

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