所以我在玩EnvDTE
和EnvDTE.CodeModel
api,我想知道是否有办法获得由CodeElement
表示的文本值。
假设我有一个CodeAttribute
,有没有办法得到string
所表示的CodeAttribute
,即[MyAttribute(value="myvalue")]
。
我知道使用CodeElement
的各种属性重建代码是可能的,至少在某些情况下是这样,但是对于某些情况来说,仅仅获取文本似乎更容易。
谢谢!
最佳答案
CodeElement
接口具有表示缓冲区内元素的开始和结束的属性StartPoint
和EndPoint
。它们包含行号/列,可以传递给IVsTextLines.GetLineText
之类的方法,并返回您要查找的值。
要获取给定IVsTextLines
的CodeElement
,可以执行以下操作
CodeElement ce = ...;
TextDocument td = ce.StartPoint.Parent;
IVsTextLines lines = td as IVsTextLines;