Roslyn中ToMinimalDisplayString方法position参数含义与单位咨询
关于ISymbol.ToMinimalDisplayString中position参数的说明
- 参数单位:
position参数的单位是源代码的绝对字符偏移量(从文件起始位置开始计数的字符总数),并非行号。 - 行号值不可直接使用:不能将
mySyntaxTree.GetLocation(myNode.Span).GetLineSpan().StartLinePosition.Line作为该参数传入,这个值是从0开始计数的行索引,和方法要求的字符偏移量类型完全不匹配。 - 实验现象的原因:你用行号传入时,方法无法移除不必要的命名空间,是因为行号对应的位置和代码节点实际的字符位置偏差极大,导致语义模型无法定位到正确的上下文;而
myNode.Span.Start正是节点在源代码中的起始字符偏移量,能让方法准确识别上下文,因此行为符合预期。
内容的提问来源于stack exchange,提问作者CarlJ
相关产品推荐
相关产品推荐

