可能重复:
C# 解析器
在 C# 如何从文件夹中的文件中读取实体并读取其属性。Example In Folder Companies.Entites 如果有三个实体文件说
Company.cs
Office.cs
Contacts.cs
那么如何读取每个文件并一一处理其属性。
可能重复:
C# 解析器
在 C# 如何从文件夹中的文件中读取实体并读取其属性。Example In Folder Companies.Entites 如果有三个实体文件说
Company.cs
Office.cs
Contacts.cs
那么如何读取每个文件并一一处理其属性。
阅读你的源文件:
List<string> sources = new List<string>();
foreach (string file in Directory.GetFiles(path, "*.cs"))
sources.Add(File.ReadAllText(file));
创建编译器参数:
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = true;
添加对所需库的引用:
parameters.ReferencedAssemblies.Add("mscorlib.dll");
parameters.ReferencedAssemblies.Add("System.dll");
// etc
将您的源代码编译为内存中的程序集:
var provider = new CSharpCodeProvider();
var results = provider.CompileAssemblyFromSource(parameters, sources.ToArray());
验证编译成功:
if (results.Errors.HasErrors)
{
// display results.Errors
}
并使用反射来读取编译类型信息:
var assembly = results.CompiledAssembly;
var types = assembly.GetTypes();
foreach (Type type in types)
{
string name = type.Name;
var properties = type.GetProperties(); // public properties
// etc
}