在C#中有没有办法将函数的源代码转换为字符串?有点像在JavaScript中如何完成。我需要这个,因为我正在为Asp.Net控件编写一些文档,并希望在结果旁边显示原始源代码,而无需复制/粘贴它。
答案 0 :(得分:4)
简答:不。
答案很长:您可以在编译时使用MSBuild任务,T4模板或手动解析内容生成内容,或使用Roslyn为您解析它。
如果你在运行时需要源代码,你肯定需要在部署的东西中包含cs文件,因为没有稳定的方法来获取代码。 (你可以尝试运行时反编译,但这看起来“丑陋”而且不太精确。)
答案 1 :(得分:0)
作弊方式:
在项目中包含.cs文件,并从中读取。
答案 2 :(得分:0)
听起来你希望函数在执行运行时执行任务,在文本文件中写入(它)源代码。这是不可能的,因为该函数在运行时运行为ASSEMBLY(或二进制)。
然而,您可以让函数从某处读取其源代码的副本,然后将其写入其他地方
答案 3 :(得分:0)
您可以使用以下工具之一:
答案 4 :(得分:0)
您可以将C#编译器作为一个单独的进程运行(它是.Net Framework的一部分,可以免费使用 - 然后与它进行同步)并加载生成的程序集或使用适当的方法发出IL代码(您必须生成“真实的” “IL代码首先为你准备这样的小模板 - 只需编写c#类并检查生成的IL代码是如何形成的。检查你是否具有相应的权限。
示例Emit用法就在这里(我前段时间写过): http://bitcare.codeplex.com/SourceControl/changeset/view/21192#366441