System.RuntimeType
एक ठोस वर्ग है जो अमूर्त आधार वर्ग से निकलता है System.Type
। चूंकि System.RuntimeType
सार्वजनिक नहीं है, आप आमतौर पर इसके उदाहरणों का सामना करेंगे System.Type
।
भ्रम की स्थिति तब पैदा हो सकती है जब आप किसी वस्तु के प्रकार को प्राप्त करने की कोशिश कर रहे हों और गलती GetType()
से किसी अन्य वस्तु को पहली वस्तु के प्रकार का प्रतिनिधित्व करने के बजाय सीधे उस वस्तु का उपयोग कर रहे हों। तब Type.ToString()
वापस आएगा "System.RuntimeType"
जब उस वस्तु को कहा जाता है जो एक प्रकार का प्रतिनिधित्व कर रही है:
string str = string.Empty;
Type strType = str.GetType();
Type strTypeType = strType.GetType();
strType.ToString();
strTypeType.ToString();
उदाहरण के लिए, इस ब्लॉग पोस्ट में कोई व्यक्ति किसी डेटाबेस में एक कॉलम का प्रकार प्राप्त करने की कोशिश कर रहा है, कुछ इस तरह से कर रहा है:
object val = reader.GetFieldType(index);
Type runtimeType = val.GetType();
PropertyInfo propInfo = runtimeType.GetProperty("UnderlyingSystemType");
Type type = (Type)propInfo.GetValue(val, null);
चूंकि वैल पहले से ही एक प्रकार की वस्तु है, इसलिए val.GetType () प्रकार का प्रतिनिधित्व करने वाला एक अन्य प्रकार का ऑब्जेक्ट लौटाएगा System.RuntimeTime
क्योंकि यह मूल प्रकार ऑब्जेक्ट का प्रतिनिधित्व करने के लिए उपयोग किया जाने वाला ठोस प्रकार है। ब्लॉग पोस्ट तब कुछ अनावश्यक प्रतिबिंब चालबाजी दिखाती है, मूल प्रकार के ऑब्जेक्ट को प्राप्त करने के लिए, जब वास्तव में यह आवश्यक था:
Type type = reader.GetFieldType(index) as Type;
इसलिए यदि आपकी Type
वस्तु रिपोर्ट कर रही है कि यह एक का प्रतिनिधित्व करता है System.RuntimeType
, तो सुनिश्चित करें कि आपने गलती GetType()
से किसी ऐसे प्रकार पर कॉल नहीं किया है जो आपको पहले ही मिल चुका है।