2008-09-10 7 views
5

प्रतिबिंब का उपयोग करके, मुझे उपयोगकर्ता डीएलएल की जांच करने और इसमें कक्षा का ऑब्जेक्ट बनाने की आवश्यकता है।डिज़ाइन समय पर कक्षा का नाम जानने के बिना कोई ऑब्जेक्ट बनाना

ऐसा करने का सरल तरीका क्या है?

उत्तर

1

आप Activator.CreateInstance का उपयोग कर, एक dll में सभी प्रकार आप Assembly.GetTypes

1

उपयोग कर सकते हैं इन कड़ियों पर एक नजर डालें पाने के लिए एक प्रकार वस्तु से एक वर्ग का एक उदाहरण बना सकते हैं:

http://www.java2s.com/Code/CSharp/Development-Class/Createanobjectusingreflection.htm

http://msdn.microsoft.com/en-us/library/k3a58006.aspx

आप मूल रूप से प्रतिबिंब का उपयोग एक विधानसभा लोड करने के लिए है, तो एक प्रकार आप में रुचि रखते हैं लगता है। एक बार जब आप प्रकार है, तो आप इसे कंस्ट्रक्टर्स या अन्य से मुलाकात की है खोजने के लिए पूछ सकते हैं hods/गुण। एक बार आपके पास कन्स्ट्रक्टर हो जाने के बाद, आप इसे आमंत्रित कर सकते हैं। आसान!

2

System.Reflection.Assembly वह वर्ग है जिसका आप उपयोग करना चाहते हैं। इसमें उपयोगकर्ता डीएलएल के साथ निहित प्रकारों के पुनरावृत्ति के लिए कई विधि शामिल हैं। आप प्रत्येक वर्ग के माध्यम से पुनरावृति कर सकते हैं, शायद देखें कि क्या वह एक विशेष इंटरफ़ेस आदि

http://msdn.microsoft.com/en-us/library/system.reflection.assembly_members.aspx

से विरासत केवल सार्वजनिक लोगों के लिए प्रकार की सूची, या Assembly.GetExportedTypes() प्राप्त करने के लिए Assembly.GetTypes() विधि जांच।

1

जैसा कि पहले ही कहा जा चुका है, आपको सिस्टम को पोक करने की आवश्यकता है। रिफ्लेक्शन नेमस्पेस।

यदि आप पहले से जानते हैं कि डीएलएल का स्थान/नाम जिसे आप लोड करना चाहते हैं, तो आपको असेंबली के माध्यम से पुन: प्रयास करना होगा। गेट टाइप()।

स्यूडोकोड में यह कुछ इस तरह दिखेगा:

बनाएँ और विधानसभा वस्तु।

असेंबली में निहित सभी प्रकारों के माध्यम से Iterate।

आपको इच्छित, के लिए यह (CreateInstance) आह्वान लिए देख रहे हैं ...

इसे बुद्धिमानी से उपयोग करें पाते हैं।

;)

यदि आप के चारों ओर एक नज़र रखना चाहता हूँ मैं प्रतिबिंब कोड के बहुत सारे है, लेकिन काम बहुत आसान है और वहाँ जंगली में वहाँ के नमूनों के साथ लेख के कम से कम एक दर्जन से अधिक कर रहे हैं। (उर्फ Google)। इसके बावजूद, एमएसडीएन प्रतिबिंब संदर्भ के लिए आपका मित्र है।

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