在控制台应用中。
假设我有一个类源代码文件MyClass.cs
。是否有一些API能够将此文件加载为"源代码文件/类"?我知道如何加载文件并读取其内容,我知道如何使用反射来读取类成员以及所有这些,但这两者都不是我需要的。
如果我只是加载并以字符串形式读取文件内容,我真的不想使用纯字符串操作。
我想/希望有一些API就像这个伪代码一样:
var sourceCodeClass = ReadFileAsSourceCode("{Path}/MyClass.cs");
sourceCodeClass.AddProperty([either string declaration or some strongly typed way of creating one with like 'SourceCodeProperty' or something]);
sourceCodeClass.OutputAsFile("{Path}/MyClass.cs");
或者其他什么。似乎这可以在EnvDTE区域中用于创建VS扩展,但我怀疑我的googlefu和文档都很弱。
答案 0 :(得分:0)
您可以在运行时using CodeDom中编译C#。这也包含在Mono中。
CodeProvider
将在编译代码时生成DLL文件。您可以使用AppDomain在运行时加载DLL。然后可以使用System.Type
在汇编中找到System.Reflection.Assembly
来编译代码的内容。
最后,您可以使用System.Type
从System.Activator.CreateInstance()
创建实例。