How to retrieve all public methods from *.dll

蓝咒 提交于 2019-11-28 23:41:28

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);
    }
}
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.

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();

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!