我用c#编写了*.dll,我需要获得该*.dll中包含的所有公共方法或类的列表。是否有一些方法可以用c#编程地做到这一点?
是使用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();