gpt4 book ai didi

c# - 将通过 Reflection.Emit 生成的类型保存为代码文件 (.cs),而不是将其保存在 .dll 文件中

转载 作者:太空宇宙 更新时间:2023-11-03 19:34:40 24 4
gpt4 key购买 nike

在开始之前,让我先说说我的经验:我对 C#.NET、Web 服务、XML 部分等有一定的经验。反射对我来说是新事物,虽然我已经广泛阅读它并尝试了一些实验性代码,但没有使用反射做出任何伟大的事情

我 checkout many examples我们如何在运行时创建类型,然后将其保存在程序集 (.dll) 文件中。在我看到的所有示例中,都是关于将创建的类型保存在 .dll 文件而不是代码文件中。有没有办法通过反射创建代码文件?

我需要创建代码文件,因为我想分发代码而不是编译的程序集。我想做的是像 xsd.exe 那样,吐出一个 .dll 或代码文件(任何语言)。

有没有办法创建代码文件,因为我能找到的大部分地方都是

AssemblyBuilder ab = System.AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Save);

然后最后

ab.Save("QuoteOfTheDay.dll");

最佳答案

.NET 框架中没有内置反汇编程序。您可以使用 Reflector 将您发出的 IL 转换为它支持的一种源代码语言。这不太可能会毫无问题地工作,Reflector 旨在将编译器生成的代码转换回源代码。编译器倾向于对它们生成的 IL 持保守态度,这与 System.Reflection.Emit 提供的“随心所欲”的方法不同。

如果您需要源代码,那么您最好先生成它。使用 System.CodeDom。这就是 System.Xml.Serialization 使用的。

关于c# - 将通过 Reflection.Emit 生成的类型保存为代码文件 (.cs),而不是将其保存在 .dll 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2571711/

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