2011-09-02 18 views
13

मैं Type.GetType का उपयोग करने की कोशिश कर रहा हूं और "caLibClient.entity.Web2ImageEntity" पूर्ण श्रेणी का नाम पास कर रहा हूं। CaLibClient.entity अलग-अलग असेंबली (caLibClient) में स्थित नामस्थान है और प्रोग्राम संदर्भ असेंबली सूची में जोड़ा गया है। जब मैं इसे प्रोग्राम से कॉल करता हूं तो Type.GetType हमेशा नल लौटाता है, क्या गलत है?Type.GetType वापसी शून्य

उत्तर

24

आप विधानसभा नाम के रूप में अच्छी तरह से जोड़ने के लिए, के बाद से अपने प्रकार को क्रियान्वित करने विधानसभा में नहीं है (और न ही mscorlib।) की जरूरत है तो कॉल किया जाना चाहिए:

var myType = Type.GetType("caLibClient.entity.Web2ImageEntity, FullAssemblyName"); 

Type.GetType() docs से:

typeName
प्रकार: System.String
प्राप्त करने के लिए प्रकार के असेंबली-योग्य नाम। असेंबली क्वालिफाइडनाम देखें। यदि प्रकार वर्तमान में असेंबली या Mscorlib.dll में निष्पादित है, तो यह नाम नाम अपने नामस्थान द्वारा योग्यता प्रदान करने के लिए पर्याप्त है।

TopNamespace.SubNameSpace.ContainingClass+NestedClass, MyAssembly, Version=1.3.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089 

अद्यतन:

docs for AssemblyQualifiedName से, यह एक नमूना नाम है आप पहले से ही अपनी परियोजना में विधानसभा को संदर्भित कर रहे हैं, और संकलन समय किस प्रकार के नाम पर जानते हैं है, आप बेहतर कह रहे हैं

Type myType = typeof(caLibClient.entity.Web2ImageEntity); 

अब से आपको रन-टाइम पर प्रकार की खोज करने की आवश्यकता नहीं है; कंपाइलर आपके लिए सबकुछ करेगा। , Assembly qualified name

+0

पूर्ण असेंबली नाम कैसे ढूंढें? यकीन नहीं है कि अगर मैं सही ढंग से समझता हूं तो इसका क्या अर्थ है। कहा देखना चाहिए? – Tomas

+0

@ टॉमस असेंबली का नाम क्या है जिसका आपने उल्लेख किया था? – dlev

1

आप इस तरह अपने मामले कुछ में एक assembly qualified name पारित करने के लिए, की जरूरत है पूर्ण असेंबली योग्य नाम कोडिंग हार्ड कोड से बच सकते हैं। उदाहरण के लिए:

Type.GetType(
    "MyAssembly.Foo.BarSubclass, " + typeof(MyAssembly.Foo.IBar).Assembly.FullName) 
+0

मुझे अभी भी शून्य मिल गया है – Tomas

2

प्रयास करें Type.GetType("caLibClient.entity.Web2ImageEntity, caLibClient"):

1

के अनुसार आप विधानसभा में एक प्रकार जानते हैं कि लक्ष्य प्रकार आप में रहती हैं

var yourType = Type.GetType("caLibClient.entity.Web2ImageEntity,caLibClient"); 
संबंधित मुद्दे