试图在roslyn中识别一个类实例

时间:2014-08-03 16:06:39

标签: c# roslyn

我正在编写Visual Studio扩展,我希望通过名称和位置获取变量的类型。

例如: 有一个C#代码:

class Program
{
   static void Main(string[] args)
   {
     var flagMick = true;
     Console.WriteLine(""Hello, World!"");
   }
}

我能够与ExpressionEvaluator和DTE进行通信,我能够从快照中读取数据并了解其位置。我有具体的位置但是:

我不想“重新学习”c#解析,这就是Roslyn应该用的。

所以我希望我的扩展能够识别“FlagMick”的类型,因为它的名称和位置在屏幕上。

我如何用Roslyn做到这一点?

1 个答案:

答案 0 :(得分:2)

使用以下代码:

var doc = point.Snapshot.GetOpenDocumentInCurrentContextWithChanges();
var model = doc.GetSemanticModelAsync().Result;
var symbol = SymbolFinder.FindSymbolAtPosition(model, point, doc.Project.Solution.Workspace);

您需要引用Microsoft.CodeAnalysis.EditorFeatures.Text.dll,您可以通过添加appropriate NuGet package来获取。