-1

重複の可能性:
C#のパーサー

C#では、フォルダ内のファイルからエンティティを読み取り、その属性を読み取る方法。フォルダ会社の例.3つのエンティティファイルがある場合のエンティティは次のように言います

Company.cs
Office.cs
Contacts.cs

次に、各ファイルを読み取り、その属性を1つずつ処理する方法。

4

1 に答える 1

2

ソースファイルを読んでください:

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
}
于 2012-12-06T15:06:02.643 に答える