C# 在C中从程序集中提取类#

C# 在C中从程序集中提取类#,c#,reflection,reflection.emit,C#,Reflection,Reflection.emit,是否可以从使用Reflection.Emit创建的程序集中提取类并将其物理保存到目录 我想使用这种操作来动态生成具有特定内容(类、方法…)的项目 有没有一种方法可以用代码保存动态类,而不需要外部工具对其进行反编译?有,只要传入AssemblyBuilderAccess.RunAndSave或AssemblyBuilderAccess.save。然后,您可以使用将其写入磁盘—这对于运行它以查看您做错了什么非常有用:) 请注意,这会保存IL而不是C源代码,因此您仍然需要对其进行反编译。如果您希望C#

是否可以从使用Reflection.Emit创建的程序集中提取类并将其物理保存到目录

我想使用这种操作来动态生成具有特定内容(类、方法…)的项目


有没有一种方法可以用代码保存动态类,而不需要外部工具对其进行反编译?

有,只要传入
AssemblyBuilderAccess.RunAndSave
AssemblyBuilderAccess.save
。然后,您可以使用将其写入磁盘—这对于运行它以查看您做错了什么非常有用:)

请注意,这会保存IL而不是C源代码,因此您仍然需要对其进行反编译。如果您希望C#源代码不进行反编译,那么您需要生成C#源代码作为您的源代码-可能需要通过Roslyn或
CSharpCodeProvider
来获取IL

注意:以这种方式使用时,并非所有操作都有效-如果您跳过可访问性检查,例如访问您无法控制的类型的非公共成员。这在某些仅在运行时使用的场景中是允许的,但在从磁盘加载的程序集中是不可靠的。类似地,在IL中,很多事情都可能没有直接的C#等价物