从变量使用站点获取声明源
本文关键字:获取 声明 站点 变量 | 更新日期: 2023-09-27 18:04:55
示例
Console.WriteLine( arg )
我试图获得相应的符号(不是接口),其中arg
被声明/定义。所以我可以举个例子如果我们说下面的代码是定义站点。
Dim x = "Hello World"
这样我就可以得到分配值Hello World
的跨度/位置请注意,不是在文本之后,因为我可以在使用站点上获得变量arg
的值。调试器本地/监视窗口显示类型Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol.VariableLocalSymbol
不幸的是这是internal
如果有人知道,请举个例子。
终于想通了。Don't是最好的方法(但它只适用于我需要它的地方)
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