在C#中如何将一个文件夹中从文件中读取(或多个)实体和读取其属性。例如在文件夹Companies.Entites如果有三个实体的文件说
Company.cs
Office.cs
Contacts.cs
那么如何读取每个文件并处理其属性逐个。
在C#中如何将一个文件夹中从文件中读取(或多个)实体和读取其属性。例如在文件夹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
}
编译成功了,但在线上给予了豁免var types = assembly.GetTypes();无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息。 –
无法加载文件或程序集“SaiAdinath.Core.Entities,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”或其某个依赖项。该系统找不到指定的文件。 融合日志: ===预绑定状态信息=== LOG:用户= IMANDIASIA \ RAJESH LOG:DisplayName的= SaiAdinath.Core.Entities,版本= 1.0.0.0,文化=中性公钥=空 (完全指定) LOG:Appbase = file:/// D:/ Data/New1/TestProject/ReadClassAndProperty/bin/Debug/ LOG:初始私有路径= NULL 调用程序集:(未知)。 –
非常感谢。该问题已解决,因为我在bin \ debug文件夹中复制了所需的dll。再次感谢@lazyberezovsky –
你尝试去做呢?告诉我们你的尝试。 – Zabavsky
我没有试过,因为我不知道正确的方法。只知道它可以通过反射来完成。我只想简单地读一个文件找到类名,然后逐个处理每个属性。在此先感谢 –
你是什么意思的属性?类属性?文件属性? –