- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 CSharpSyntaxRewriter
覆盖 VisitMemberAccessExpression
,在那个方法里面,我调用MemberAccessExpressionSyntax.WithName()
,但它返回的节点有不同的 SyntaxTree
与原始节点相比,这是一个问题,因为这意味着调用 SemanticModel.GetSymbolInfo(node)
时会引发错误.
有没有办法改变Name
的 MemberAccessExpressionSyntax
但仍有 SyntaxTree
与 SemanticModel.GetSymbolInfo(node)
一起使用?
我的代码是:
public sealed override SyntaxNode VisitNode(SyntaxNode node)
{
var nodeSyntax = (MemberAccessExpressionSyntax) node;
if (nodeSyntax.Name.ToString() == OldModifier && !HasSymbol(nodeSyntax, out _))
{
if (ModifierType == ModifierType.Damage)
nodeSyntax = nodeSyntax.WithName(IdentifierName($"GetDamage({NewModifier})"));
else
nodeSyntax = nodeSyntax.WithName(IdentifierName($"GetCritChance({NewModifier})"));
nodeSyntax = nodeSyntax.WithLeadingTrivia(node.GetLeadingTrivia()).WithTrailingTrivia(node.GetTrailingTrivia());
}
return nodeSyntax;
}
(
VisitNode
从
VisitMemberAccessExpression
调用)
SyntaxTree
差异的图像:
WithName
后:
最佳答案
有几种方法可以处理这样的事情:
改变您的访问方式
在对 VisitMemberAccessExpression 进行任何更改之前,您可以重组代码以调用 VisitNode 吗?例如,您可以从:
var memberAccess = memberAccess.With...();
memberAccess = VisitNode(memberAccess);
return memberAccess;
到
var memberAccess = VisitNode(memberAccess);
memberAccess = memberAccess.With...();
return memberAccess;
那么这可能意味着您在完成重写之前正在访问原始节点。请注意,如果您正在执行递归操作,这仍然很棘手。
关于c# - 从新节点获取符号信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65929197/
新的媒体管理器看起来很棒,非常好,但是,在以前的版本中,它在附件详细信息中有几个字段我想避免使用,我曾经使用以下代码: add_filter('attachment_fields_to_edit',
当您使用 IDE 构造函数(new->activity)创建新 Activity 时 - 在 Android Studio 和 Eclipse 中 - 它会创建新的 java 文件、布局文件、添加 A
我使用了 PDF 渲染问题中的代码 How to render PDF in Android 而且有效!回答者的 Prop ,但我的问题是关于做同样的事情,但也发送关键字以在 pdf 中搜索。我不知道
我试图让用户能够循环浏览视频,即时更改 AVPlayer URL 而无需刷新 View 。但是,现在我只是在每次播放视频时实例化 AVPlayer 对象(导致音频相互播放),我觉得这不是最好的方法。有
当您向 ASP.NET MVC 项目添加新 View 时,您可以通过在对话框中选择它应该使用的模型类来强类型化 View 。问题在于该下拉菜单中包含所有引用项目和 dll 中的所有类和接口(inter
简而言之: 从新 git 存储库 上的远程分支 pull 代码后,我能否将代码重置为执行 git pull 之前的状态? 长话短说: 我有两个包含脚本的文件夹,一个文件夹代表另一个文件夹中文件的另一个
如何导出 ARMeshGeometry新生成的SceneReconstruction最新 iPad Pro 上的 API .obj文件? 这是SceneReconstruction文档。 最佳答案 从
我是一名优秀的程序员,十分优秀!