【发布时间】:2014-09-26 05:01:25
【问题描述】:
我正在编写一个 Visual Studio 扩展,我想通过变量的名称和位置获取变量的类型。
例如: 有一段 C# 代码:
class Program
{
static void Main(string[] args)
{
var flagMick = true;
Console.WriteLine(""Hello, World!"");
}
}
我能够与 ExpressionEvaluator 和 DTE 进行通信,我能够从快照中读取数据并了解其位置。我有具体的位置,但是:
我不想“重新学习”c# 解析,这就是 Roslyn 应该做的。
所以我希望我的扩展程序能够识别“FlagMick”的类型,给出它的名称和在屏幕上的位置。
我怎样才能对 Roslyn 做到这一点?
【问题讨论】:
-
“屏幕上的名称和位置”是什么意思?你指的是实际的 X-Y 坐标吗?
-
类型将从
=运算符右侧的赋值中推断出来(在这种情况下,因为它是var)。我不确定这与它在屏幕上的位置有什么关系。可能你的意思是代码中的位置? -
name 是他在 flagMick 中的参数名称,位置是我从 TextView 收到的位置。
-
嘿@Slaks,谢谢你的回答,我希望你能打开一个答案,这样我就可以在那里发表评论:我遇到了可访问性问题:'Microsoft.CodeAnalysis.Text.TextExtensions.GetOpenDocumentInCurrentContextWithChanges(Microsoft.CodeAnalysis .Text.SourceText)' 由于其保护级别而无法访问