2012-11-09 55 views
4

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

+5

听起来像一个反射问题。我个人只会读取源文件 –

回答

4

简答题:没有。

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

如果您在运行时需要源代码,那么您肯定需要将cs文件包含在部署的东西中,因为没有稳定的方式来获取代码。 (你可以尝试运行时编译不过,但是看起来“丑陋”,而不是非常精确。)

0

的作弊方式:

包括在项目中的.cs文件,并从阅读。

+0

这不会是微不足道的。每个函数都需要使用反射来访问自己的类型,您需要在.cs文件中找到该类型的定义(或者在部分类中定义该类型),然后在该定义中找到相应的成员。这都是*可能的*,但是这需要很多工作。除此之外,如果您想处理一般情况,您基本上需要创建自己的C#解析器。 – Servy

+0

@Servy:你不需要编写自己的C#解析器。有罗斯林。 – TDaver

+0

@TDaver我认为这仍然是测试?它正式发布了吗? – Servy

0

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

但是,您可能具备的功能读取然后某处它的源代码的副本写别的地方

0

您可以将C#编译器作为单独的进程运行(它是.Net Framework的一部分,可免费使用 - 执行syn然后加载生成的程序集或加载生成的程序集或使用正确的方法发送IL代码(首先,您必须先生成“真实”IL代码,以便为您准备此类小模板 - 仅编写c#类并检查生成的IL代码的外观)。检查你是否有适当的权限来做到这一点。

样品散发出的用法是这里实例(我写了前一段时间): http://bitcare.codeplex.com/SourceControl/changeset/view/21192#366441

相关问题