4

在 C# 中有没有办法将函数的源代码转换为字符串?有点像它是如何在 JavaScript 中完成的。我需要这个,因为我正在为 Asp.Net 控件编写一些文档,并希望在结果旁边显示原始源代码,而不需要复制/粘贴它。

4

5 回答 5

4

简短的回答:没有。

长答案:您可以在编译时使用 MSBuild 任务、T4 模板或手动解析东西,或使用 Roslyn 为您解析它。

如果你在运行时需要源代码,你肯定需要在部署的东西中包含 cs 文件,因为没有稳定的方法来取回代码。(虽然你可以尝试运行时反编译,但这看起来“丑陋”而且不是很精确。)

于 2012-11-09T17:07:28.633 回答
0

您可以将 C# 编译器作为一个单独的进程运行(它是 .Net Framework 的一部分,并且可以免费使用 - 然后与之同步)并使用适当的方法加载生成的程序集或发出 IL 代码(您必须生成“真正的”IL 代码首先为你准备这么小的模板——只需编写 c# 类并检查生成的 IL 代码的样子)。首先检查您是否有适当的权限。

例如,示例 Emit 用法在这里(我前段时间写过): http ://bitcare.codeplex.com/SourceControl/changeset/view/21192#366441

于 2012-11-12T14:21:51.993 回答
0

作弊方式:

在您的项目中包含 .cs 文件,并从中读取。

于 2012-11-09T17:08:03.867 回答
0

听起来您希望函数在运行时执行任务,将(其)源代码写入文本文件。这是不可能的,因为该函数在运行时作为 ASSEMBLY(或二进制)运行。

但是,您可以让该函数从某个地方读取其源代码的副本,然后将其写入其他地方

于 2012-11-09T17:10:28.883 回答
0

您可以使用以下工具之一:

于 2012-11-09T17:14:15.970 回答