示例
Console.WriteLine( arg )
我正在尝试获取声明/定义arg
的相应符号(不是接口)。所以我可以举例说,如果我们说下面的代码是定义网站。
Dim x = "Hello World"
这样我就可以获得指定值Hello World
的范围/位置
请注意,不是在文本之后,因为我可以在使用站点获取变量arg
的值。
调试器本地/监视窗口显示类型Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol.VariableLocalSymbol
不幸的是,这是internal
如果有人知道,请你提供一个例子。
答案 0 :(得分:0)
终于明白了。不是最好的方式(但它适用于我需要它。)
Dim ThisIdentifier = CType(TheFormatString.Expression, IdentifierNameSyntax)
If ThisIdentifier Is Nothing Then Exit Sub
Dim ConstValue = semanticModel.GetConstantValue(ThisIdentifier, cancellationToken)
If ConstValue.HasValue = False Then Exit Sub
Dim FoundSymbol = semanticModel.LookupSymbols(TheFormatString.Expression.Span.Start, name:=ThisIdentifier.Identifier.Text)(0)
Dim VariableDeclarationSite = TryCast(FoundSymbol.DeclaringSyntaxReferences(0).GetSyntax.Parent, VariableDeclaratorSyntax)
If VariableDeclarationSite Is Nothing Then Exit Sub
Dim TheValueOfTheVariable = VariableDeclarationSite.Initializer.Value