Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to retrieve all public methods from *.dll

I have *.dll written with C# and I need to get list of all public methods or classes contained in that *.dll. Is there some way to do it programmatically with C#?

like image 948
Neveriah Avatar asked Sep 17 '11 13:09

Neveriah


2 Answers

Yes use Assembly.GetTypes to extract all of the types, and then use reflection on each type to iterate the public methods.

Assembly a = Assembly.LoadWithPartialName("...");
Type[] types = a.GetTypes();
foreach (Type type in types)
{
    if (!type.IsPublic)
    {
        continue;
    }

    MemberInfo[] members = type.GetMembers(BindingFlags.Public
                                          |BindingFlags.Instance
                                          |BindingFlags.InvokeMethod);
    foreach (MemberInfo member in members)
    {
        Console.WriteLine(type.Name+"."+member.Name);
    }
}
like image 96
TheCodeKing Avatar answered Sep 20 '22 11:09

TheCodeKing


var assembly = // grab assembly
var types = assembly.GetExportedTypes();

foreach (var type in types) {
    var methods = type.GetMethods(BindingFlags.Public);
}

GetExportedTypes will return all public types in the assembly. You also didn't specify whether you wanted just instance methods, static methods or both.

like image 36
Matthew Abbott Avatar answered Sep 21 '22 11:09

Matthew Abbott