मैं असेंबली की सूची से रनटाइम पर एक प्रकार का पता लगाने की कोशिश कर रहा हूं; मेरा कोड इस तरह कुछ है:टाइप.गेट टाइप() काम और असेंबली.गेटटाइप() क्यों काम नहीं करेगा?
foreach (Assembly assembly in assembliesToSearch)
{
Type t = assembly.GetType(assemblyName);
if (t != null)
{
return t;
}
}
, और मेरी समस्या यह है कि टी हमेशा नल के रूप में आ रहा है।
Type.GetType(typeof(MyNamespace.MyClass).AssemblyQualifiedName)
ठीक काम करता है, लेकिन
assembly.GetType(typeof(MyNamespace.MyClass).AssemblyQualifiedName)
नहीं है (विधानसभा है जब: डीबगर और VS2010 में इंटरमीडिएट खिड़की के साथ प्रयोग करना, मैं निम्नलिखित जब मैं पाश के अंदर एक ब्रेकपाइंट डाल देखा असेंबली जो मुझे पता है वह कक्षा है जिसमें मैं ढूंढ रहा हूं - डीबगर में, मैं असेंबली पर एक घड़ी डाल सकता हूं। गेट टाइप(), कक्षा को ब्राउज़ करें जिसे मैं तुरंत चालू करने की कोशिश कर रहा हूं, और असेंबली कॉल करता हूं। गेट टाइप ("MyNamespace.MyClass , माईनेस्पेस "))।
क्या कोई जानता है कि Type.GetType() कामों का उपयोग करके सभी असेंबली क्यों खोज रहे हैं, लेकिन असेंबली को खोजते हुए मुझे पता है कि असेंबली का उपयोग कर प्रकार है। GetType() नहीं है?
प्रतिक्रिया के लिए धन्यवाद; मेरा प्रारंभिक कोड नमूना इसे स्पष्ट रूप से नहीं दिखाता है, लेकिन मेरे लूप के अंदर जहां मैं कॉल कर रहा हूं टाइप टी = असेंबली। गेट टाइप (असेंबलीनाम), असेंबलीनाम "MyNamespace.MyClass, MyAssembly" है, इसलिए मेरी गणना के अनुसार, इसे वापस करना चाहिए उम्मीद प्रकार। –
@ डेविड: 'MyNamespace.MyClass, MyAssembly' अभी भी एक असेंबली-योग्य प्रकार का नाम है। 'Assembly.GetType()' के साथ काम करने के लिए आपको उस स्ट्रिंग से असेंबली नाम छोड़ना होगा। – adrianbanks
@adrianbanks - आप कहां से सीखते हैं "Type.GetType() इस प्रकार को हल करने के लिए वर्तमान में असेंबली के संदर्भों का उपयोग कर रहे हैं" - ऐसा लगता है कि यह [एमएसडीएन यहाँ] में नहीं है (http: // msdn .microsoft.com/en-us/पुस्तकालय/w3f99sx1 (v = vs.110) .aspx)। इसके अलावा, "वर्तमान असेंबली" क्या है? इस मामले में मैं अब देख रहा हूं, प्रकार के साथ असेंबली - जो पाया जाता है! - वर्तमान में निष्पादित विधि के साथ असेंबली नहीं है और इसका संदर्भ नहीं है ... लेकिन यह कॉल स्टैक पर एक असेंबली _is_ है।(मेरे प्रश्न का कारण: मेरे असेंबली नाम में संस्करण गलत है लेकिन प्रकार पाया जाता है।) – davidbak