visual studio -如何使用c#中的反射从可执行文件(.exe)中提取类和方法信息



我有通过visual studio生成的。exe文件。现在,以相反的方式,我需要从.exe文件中获取类信息(名称空间和类名)和方法信息(访问修饰符,返回类型和输入参数)。

实际上我可以从dll文件中得到这些信息,但不知道从可执行文件。

谁能给我一个简单的代码演示?提前感谢!!

下载ILSPY软件

step 1 => Unzip the Folder.
step 2 => now you should be able to seen ilspy application open that file.
step 3 => after open ilspy application you should go into => FILE Menu => Open.
step 4 => Browse your .exe file and open you should be able to seen whole code.
Thank you.

实际上我可以从dll文件中得到这些信息,但不知道从可执行文件。

dll和exe文件没有区别。它们都是。net程序集。只需使用与dll相同的代码/方法即可。

您需要使用Assembly.LoadFile从EXE或DLL文件中加载Assembly:

var assembly = Assembly.LoadFile("C:path_to_your_exeYourExe.exe");
foreach (var type in assembly.GetTypes())
{
    Console.WriteLine($"Class {type.Name}:");
    Console.WriteLine($"  Namespace: {type.Namespace}");
    Console.WriteLine($"  Full name: {type.FullName}");
    Console.WriteLine($"  Methods:");
    foreach (var methodInfo in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
    {
        Console.WriteLine($"    Method {methodInfo.Name}");
        if (methodInfo.IsPublic)
            Console.WriteLine($"      Public");
        if (methodInfo.IsFamily)
            Console.WriteLine($"      Protected");
        if (methodInfo.IsAssembly)
            Console.WriteLine($"      Internal");
        if (methodInfo.IsPrivate)
            Console.WriteLine($"      Private");
        Console.WriteLine($"      ReturnType {methodInfo.ReturnType}");
        Console.WriteLine($"      Arguments {string.Join(", ", methodInfo.GetParameters().Select(x => x.ParameterType))}");
    }
}

相关内容

  • 没有找到相关文章

最新更新