2010-11-07 80 views
1

我有一个类:有没有办法在C#中将类的源复制到字符串?

public class SomeClass { 
// properties and methods here 
} 

理想情况下,我想给全班发送到一个字符串,所以我可以在视图渲染。我能想到的最好的方法是运行构建脚本并将其全部发送到静态文本文件,然后在代码中引用这些文本文件。有一个更好的方法吗?我想能够说:

return View(SomeClass.SourceToString()); 

我希望我不会错过一个非常明显的方式来实现这一点。

+0

你有权访问源文件吗? – Liton 2010-11-07 19:30:05

+0

是的,我有权访问源代码。 – user500038 2010-11-07 20:02:08

回答

5

C#被编译到MSIL中。除引用原始源文件外,没有直接访问原始源的方法。

+0

我想你可以在编译时将源代码放入资源中,然后从那里抓取它,你可以使用一些名称模式来实现它。 – 2010-11-07 20:22:16

0

您可以使用反射来枚举类的所有成员,并将每个成员的声明/定义发送到StringBuilder,然后返回构建的字符串。

+0

严格来说,它不会成为源代码 – Andrey 2010-11-07 19:30:20

+0

,它不会给你源代码。 (正如其名称所暗示的,“源代码”是编译器生成MSIL的源代码,反射并不能给你,它只能将MSIL编译成C#代码,所以你得到的C#代码是*等价的*源代码,但它与源代码不一样 – jalf 2010-11-07 19:32:49

0

恐怕没有什么直接的,反射会给你一个“重新解释”的代码形式,不同的结构,没有评论,没有方法的身体...... 也许你可以保存一个“副本“的代码使用后生成脚本并在调用SourceToString方法时解析它。

我想你应该真的解释为什么你会这样的事情?也许我们将能够建议你一个更好的解决方案。

相关问题