- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
为了找到 ExpressionSyntax 实例的目标,我调用了 mySemanticModel.GetSymbolInfo(myExpressionSyntax)。
我有几个 SemanticModel 实例,每个实例都与代码文件的语法树相关。
我想迭代语义模型并找到合适的模型来返回符号信息,但我不知道如何在不使用异常的情况下测试合适的语义模型。
我需要完成以下代码:
SymbolInfo? Resolve(ExpressionSyntax expressionSyntax)
{
foreach (SemanticModel semanticModel in allSemanticModels)
{
if ( /* test if expression syntax found in semantic model */ )
{
return semanticModel.GetSymbolInfo(expressionSyntax);
}
}
return null;
}
最佳答案
SemanticModels 绑定(bind)到一个底层的 SyntaxTree,因此您只需要确保它们对齐即可。如果你有一个 IEnumerable<SemanticModel>
你只需要做:
var model = models.First(m => m.SyntaxTree == expressionSyntax.SyntaxTree);
选择合适的;你最好有一个 Dictionary<SyntaxTree, SemanticModel>
而不是每次都列举一个列表。我不确定您为什么要使用任何其他数据结构来保存它们。
坚持使用 SemanticModel 的唯一主要优势是您可以获得一些缓存优势,在此过程中交换内存;不要坚持你不会再使用的语义模型。
关于c# - 如何确定哪个 SemanticModel 实例解析 ExpressionSyntax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12556492/
我正在制作与 this 相关的 VS 扩展题。 有一个 ExpressionSyntax包含 Equals(o1, o2) ,有时我想否定它为!Equals(o1, o2) . 我还没有真正找到否定表
为了找到 ExpressionSyntax 实例的目标,我调用了 mySemanticModel.GetSymbolInfo(myExpressionSyntax)。 我有几个 SemanticMod
我是一名优秀的程序员,十分优秀!