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

本文关键字:方法 检索 dll | 更新日期: 2023-09-27 18:09:05

我用c#编写了*.dll,我需要获得该*.dll中包含的所有公共方法或类的列表。是否有一些方法可以用c#编程地做到这一点?

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

是使用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);
    }
}
var assembly = // grab assembly
var types = assembly.GetExportedTypes();
foreach (var type in types) {
    var methods = type.GetMethods(BindingFlags.Public);
}

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

Assembly.LoadWithPartialName("…")方法现在已弃用,请使用LoadFile()方法代替。

Assembly a = Assembly.LoadFile("filename.dll");
        Type[] types = a.GetTypes();
        foreach (Type type in types)
        {
            if (!type.IsPublic)
            {
                continue;
            }
            MemberInfo[] members = type.GetMethods();
            foreach (MemberInfo member in members)
            {
                Console.WriteLine(type.Name + "." + member.Name);
            }
        }

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

比如this.GetType().Assembly.GetTypes();