Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List of classes in an assembly

I've a DLL assembly, in which there are various classes. Each class has around 50-100 members and 4-5 functions. How can I create a list of all the classes and their respective members using a VB.NET program?

I need to show to the user for performing an operation using a particular class.

like image 830
Rahul Jain Avatar asked Dec 29 '08 10:12

Rahul Jain


3 Answers

Assuming that you've your assembly loaded to thisAsm (in this ex I'm using the executing assembly),

This will get you all non abstract classes:

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

And this will get you all classes that implements a specific interface.

(Eg. If you need to get only the classes that implements IYourInterface, then)

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

Once you've this list of items, you can show the members of each type, by calling the GetProperties() and GetMethods() on each member of the types list.

like image 137
amazedsaint Avatar answered Oct 15 '22 01:10

amazedsaint


See the documentation for System.Reflection.Assembly.GetTypes() and System.Type.GetMembers()

--larsw

like image 33
larsw Avatar answered Oct 15 '22 00:10

larsw


You can get all type that inherits from Form in VB.net:

Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm.GetTypes().Where(Function(t) t.BaseType = GetType(Form)).ToList()
like image 40
Mohamad Shiralizadeh Avatar answered Oct 14 '22 23:10

Mohamad Shiralizadeh