gpt4 book ai didi

c# - 反编译动态创建的类/类型

转载 作者:行者123 更新时间:2023-12-03 17:35:56 25 4
gpt4 key购买 nike

我正在使用发射动态创建类型。我对此很陌生,所以我想看看我创建的代码,以确保它是正确的。

是否可以查看生成的代码?对此有什么合适的方法?

[编辑]
标题更正

最佳答案

要转储动态程序集的内容,您可以使用以下模式:

// create a name
AssemblyName assemblyName = new AssemblyName("MyDynamicAssembly");

// create an assembly builder which can be dumped to disk. This is essential.
AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);

// define the main module
ModuleBuilder mb = ab.DefineDynamicModule(assemblyName.Name, assemblyName.Name + ".dll");

// define your type, the visibility accessor can be whatever, in this sample it is "public"
TypeBuilder tb = mb.DefineType("Type1", TypeAttributes.Public);

// seal the type, and get it's runtime descriptor. From now on, you can use the type
Type t = tb.CreateType();

// dump the assembly in the current directory, use an overload to specify the location
ab.Save(assemblyName.Name + ".dll");

这样您就可以检查您的组件。更多关于 MSDN .

请注意,如果您的意图是定义可以调用的方法,并且您对整个类型定义不感兴趣,则可以通过使用 DynamicMethod 大大简化生成。类(class)。
DynamicMethod class 负责有效地处理单个方法的生成,而没有生成动态程序集的开销(就内存而言)。

关于c# - 反编译动态创建的类/类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48163464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com