重複の可能性:
C#のパーサー
C#では、フォルダ内のファイルからエンティティを読み取り、その属性を読み取る方法。フォルダ会社の例.3つのエンティティファイルがある場合のエンティティは次のように言います
Company.cs
Office.cs
Contacts.cs
次に、各ファイルを読み取り、その属性を1つずつ処理する方法。
重複の可能性:
C#のパーサー
C#では、フォルダ内のファイルからエンティティを読み取り、その属性を読み取る方法。フォルダ会社の例.3つのエンティティファイルがある場合のエンティティは次のように言います
Company.cs
Office.cs
Contacts.cs
次に、各ファイルを読み取り、その属性を1つずつ処理する方法。
ソースファイルを読んでください:
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
}
そして、Reflectionを使用して、コンパイルされた型の情報を読み取ります。
var assembly = results.CompiledAssembly;
var types = assembly.GetTypes();
foreach (Type type in types)
{
string name = type.Name;
var properties = type.GetProperties(); // public properties
// etc
}