2

ファイルから C# コードを検証する WPF アプリケーションに取り組んでいます。

ファイルを取得し、別の必要に応じてそのタイプをインスタンス化することができました。

ここで必要なのは、設定した基準に照らしてそのコードを検証することです。どういう意味ですか?

ファイル「Test.cs」があり、このファイルに次のコードがあるとします。

using xpto;
using abcd;

public class Test
{
    public static void Testing()
    {
        Iqueryable<XYZ> var1 = ctx.Where(c => c.IdSomething == number);
        var1 = var1.Where(v => v.Count(x => x.ValZ) > 0);
    }
}

私のアプリでは、このファイルをインスタンス化し (既に完了しています)、いくつかのルールに対して検証します。たとえば、次の行で:

var1 = var1.Where(v => v.Count(x => x.ValZ) > 0);

Count(...) > 0ファイルが の代わりに使用していることを伝えたいですAny()。ファイルをテキストで読み取ることでそれができることは知っていますが、リフレクションを使用してそれが可能かどうか、またはそのようなハードコーディングを必要としない他の方法で可能かどうかを知りたいと思いました。これは、ファイルをインスタンス化するために私が行うことです (これは実際の例です)。

CompilerResults cr = provider.CompileAssemblyFromFile(cp, sourceFile.FullName);
Type instanceType = cr.CompiledAssembly.GetExportedTypes()
    .FirstOrDefault(e => e.Name.Equals(className));

これが明確でない場合は、詳しく説明できるようにお知らせください。

4

1 に答える 1

7

質問が一般的になりがちであっても、 Microsoft Roslynを使用すれば解決できます。提供されたコードから取得し、必要なすべての情報を受け取るために使用できるサービスとしてのコンパイラ。AST

これは大きな問題であるため、ここで簡潔で自明な回答を提示することはほとんどできません。たとえば、次のように、「実行方法」の具体的な例を見る方が簡単です。

Roslyn CTP: 3 つの入門プロジェクト

于 2012-12-05T18:18:40.620 に答える