2008-12-29 12 views
5

मेरे पास एक डीएलएल असेंबली है, जिसमें विभिन्न वर्ग हैं। प्रत्येक वर्ग में लगभग 50-100 सदस्य और 4-5 कार्य होते हैं। मैं एक वीबी.नेट कार्यक्रम का उपयोग कर सभी वर्गों और उनके संबंधित सदस्यों की एक सूची कैसे बना सकता हूं?असेंबली में कक्षाओं की सूची

मुझे किसी विशेष श्रेणी का उपयोग करके ऑपरेशन करने के लिए उपयोगकर्ता को दिखाने की आवश्यकता है।

उत्तर

-2

वेब पर कई उदाहरण हैं। यहां one है (हालांकि C# में)।

+0

-1 कोई स्पष्टीकरण सहित नहीं के लिए लिंक से परे। –

16

मान लिया जाये कि (इस पूर्व में मैं क्रियान्वित विधानसभा उपयोग कर रहा हूँ) है कि आप अपने विधानसभा thisAsm को लोड किया है, देखें

यह आपको सभी गैर अमूर्त कक्षाएं प्राप्त करेगा:

Assembly thisAsm = Assembly.GetExecutingAssembly(); 
List<Type> types = thisAsm.GetTypes().Where(t => t.IsClass && !t.IsAbstract).ToList(); 

और यह आपको सभी क्लास प्राप्त करेगा एसईएस जो एक विशिष्ट इंटरफ़ेस लागू करता है।

(उदा। आप केवल वर्गों है कि IYourInterface लागू करता है, तो पाने के लिए की जरूरत है), द्वारा

Assembly thisAsm = Assembly.GetExecutingAssembly(); 
List<Type> types = thisAsm.GetTypes().Where 
      (t => ((typeof(IYourInterface).IsAssignableFrom(t) 
       && t.IsClass && !t.IsAbstract))).ToList(); 

एक बार जब आप आइटम की यह सूची है, आप प्रत्येक प्रकार के सदस्यों को दिखा सकते हैं GetProperties बुला() और GetMethods() प्रकार सूची के प्रत्येक सदस्य पर।

+1

उसने "वीबी प्रोग्राम का उपयोग करके" – TheSoftwareJedi

+1

यह सी # से वीबी में परिवर्तित करने के लिए अभी भी बहुत सरल होना चाहिए। वास्तविक कोड के साथ वास्तविक उत्तर प्रदान करने के लिए –

+0

+2। -1 इसे VB.NET में अनुवाद न करने के लिए। –

1

आप सभी प्रकार है कि VB.net में Form से विरासत प्राप्त कर सकते हैं:

Dim thisAsm As Assembly = Assembly.GetExecutingAssembly() 
Dim types As List(Of Type) = thisAsm.GetTypes().Where(Function(t) t.BaseType = GetType(Form)).ToList() 
+1

vh में ahh finaly !!! –

0

यहाँ @amazedsaint उत्तर के आधार पर vb.net संस्करण है:

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