所以我在玩EnvDTEEnvDTE.CodeModelapi,我想知道是否有办法获得由CodeElement表示的文本值。
假设我有一个CodeAttribute,有没有办法得到string所表示的CodeAttribute,即[MyAttribute(value="myvalue")]
我知道使用CodeElement的各种属性重建代码是可能的,至少在某些情况下是这样,但是对于某些情况来说,仅仅获取文本似乎更容易。
谢谢!

最佳答案

CodeElement接口具有表示缓冲区内元素的开始和结束的属性StartPointEndPoint。它们包含行号/列,可以传递给IVsTextLines.GetLineText之类的方法,并返回您要查找的值。
要获取给定IVsTextLinesCodeElement,可以执行以下操作

CodeElement ce = ...;
TextDocument td = ce.StartPoint.Parent;
IVsTextLines lines = td as IVsTextLines;

08-06 04:57