在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
我沒有試過,因爲我不知道正確的方法。只知道它可以通過反射來完成。我只想簡單地讀一個文件找到類名,然後逐個處理每個屬性。在此先感謝 –
你是什麼意思的屬性?類屬性?文件屬性? –