獲取 var 的型別

要獲取使用 var 宣告的變數的實際型別,請在 SemanticModel 上呼叫 GetSymbolInfo()。你可以使用 MSBuildWorkspace 開啟現有解決方案,然後列舉其專案及其文件。使用文件獲取其 SyntaxRootSemanticModel,然後查詢 VariableDeclarations 並檢索宣告變數的 Type 的符號,如下所示:

var workspace = MSBuildWorkspace.Create();
var solution = workspace.OpenSolutionAsync("c:\\path\\to\\solution.sln").Result;

foreach (var document in solution.Projects.SelectMany(project => project.Documents))
{
    var rootNode = document.GetSyntaxRootAsync().Result;
    var semanticModel = document.GetSemanticModelAsync().Result;

    var variableDeclarations = rootNode
            .DescendantNodes()
            .OfType<LocalDeclarationStatementSyntax>();
    foreach (var varDeclaration in variableDeclarations)
    {
        var symbolInfo = semanticModel.GetSymbolInfo(varDeclaration.Declaration.Type);
        var typeSymbol = symbolInfo.Symbol; // the type symbol for the variable..
    }
}