How to retrieve all public methods from *.dll

后端 未结 3 1181
情书的邮戳
情书的邮戳 2020-12-14 20:57

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#?

相关标签:
3条回答
  • 2020-12-14 21:33

    Use System.Net.Reflection. Reflection classes let you query the metadata of types of a DLL at run time.

    Something like this.GetType().Assembly.GetTypes();

    0 讨论(0)
  • 2020-12-14 21:40

    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);
        }
    }
    
    0 讨论(0)
  • 2020-12-14 21:48
    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.

    0 讨论(0)
提交回复
热议问题