对 CaretOffset/LanguageItem 方法感到困惑

Confused by CaretOffset/LanguageItem methods

我试图找出光标所在的源文件元素(代码在 pad 内)

//Obtain document
Document sf = IdeApp.Workbench.ActiveDocument;
//out argument
DocumentRegion dr;

//Call using offset
Microsoft.CodeAnalysis.ISymbol o = sf.GetLanguageItem(sf.Editor.CaretOffset  , out dr);

返回的 ISymbol "o" 是 Object 的 Equals。文档 sf 是一个带有无参数构造函数的简单 class。光标位于构造函数内。我期待我的 class 构造函数。

哪里出错了?

好的。我找到了一种解决方法,可以从当前编辑器插入符偏移量中获取上下文数据。它需要从当前文档中获取AnalysisDocument,然后是文档的SemanticModel,获取这个模型后,调用GetEnclosingSymbol 插入符偏移量。