如何从*.dll中检索所有公共方法

Nev*_*iah 12 .net c# reflection public-method

我有*.dll用C#编写,我需要得到*.dll中包含的所有公共方法或类的列表.有没有办法用C#以编程方式进行?

The*_*ing 16

是使用Assembly.GetTypes提取所有类型,然后对每种类型使用反射来迭代公共方法.

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*ott 5

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

foreach (var type in types) {
    var methods = type.GetMethods(BindingFlags.Public);
}
Run Code Online (Sandbox Code Playgroud)

GetExportedTypes将返回程序集中的所有公共类型。您也没有指定只需要实例方法,静态方法还是两者都指定。


Sae*_*ati 2

使用 System.Net.Reflection。反射类允许您在运行时查询 DLL 类型的元数据。

就像是this.GetType().Assembly.GetTypes();