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#?
How to retrieve all public methods from *.dll
Asked Answered
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.
Assembly.LoadWithPartialName("...") method is now deprecated, use LoadFile() method instead.
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);
}
}
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();
© 2022 - 2024 — McMap. All rights reserved.