1

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

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

我需要创建代码文件,因为我想分发代码而不是编译的程序集。我想做的是类似的事情xsd.exe,要么吐出 .dll 或代码文件(任何语言)。

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

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

然后最后

ab.Save("QuoteOfTheDay.dll");
4

2 回答 2

4

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

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

于 2010-04-03T17:20:06.867 回答
2

通常使用字符串类或 CodeDOM ( http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx ) 来生成 C# 源代码。

于 2010-04-03T15:51:55.560 回答