如何在Roslyn中检测隐式方法以委派转换?

帕维尔·克里梅兹

所以id喜欢找到方法组id隐式转换为委托的地方,例如:

EventHandler a = method;

并将它们与显式委托创建区分开

EventHandler a = new EventHandler(method);

两者的类型信息和转换看起来完全相同。有没有一种方法可以使用语义模型来实现,而无需遍历树并尝试查找父级新对象表达式?

帕维尔·克里梅兹

通过遍历二进制表达式节点并查看Right表达式转换,可以大致找到这些位置:

void VisitBinaryExpression(BinaryExpressionSyntax binaryExpression)
{
   var conversion = semanticModel.GetConversion(binaryExpression.Right);
   if (conversion.IsMethodGroup)
   {

   }
}

它看起来不是很可靠,但这是我到目前为止发现的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Roslyn诊断分析器中检测隐式转换

如何在std :: vector :: emplace_back上检测隐式转换损失的整数精度

如何在JPEG文件中查找/检测隐藏文件?

如何在委派任务中检测异常(SSLEngine)

如何检测隐藏的桌面?

如何检测隐藏的按钮?

Scala 是否支持从调用者而不是从定义中检测隐式参数?

C# 如何在 Roslyn 中检测 EvenHandler 订阅

如何使用Scala隐式方法解决方法委派

在python中检测隐式子字符串模式

检测隐藏输入中的更改[type =“ file”]

如何在Java方法中检测递归

如何在Android中检测夏令时转换

如何在Kotlin中匿名传递委派财产?

Golang在分配给变量时无法检测隐式类型的const

如何在 Go 中显式转换类型?

隐式转换如何在C ++中工作

Python中的自动方法委派

在Scala中,如何在执行期间找到有效的隐式方法,声明和转换

如何在视图方法中检测当前URL

如何在Jquery $ .post方法中检测加载数据?

如何在jQuery中检测触发方法调用事件

如何在Python中显式检测生成器结束?

如何在嵌入式Linux中检测GPIO线上的中断?

如何在Jenkins声明式管道中检测哪个并行阶段失败?

如何检测隐私权限更改(例如摄像机访问权限)

可以在Visual Studio中通过泄漏检测隐藏安全的内存泄漏吗?

如何在 Roslyn 中检查方法参数类型/返回类型是否为泛型?

如何在Python中将所有方法调用委派给C#DLL