所以我还想寻找到方法组ID implcitly投委派以下地方:如何检测在Roslyn中委托转换的隐式方法?
EventHandler a = method;
和明确的委托创建区分它们
EventHandler a = new EventHandler(method);
类型信息和转换看起来完全一样的两个这些。有没有办法使用语义模型来做到这一点,而无需遍历树并试图找到一个父新的对象表达式?
所以我还想寻找到方法组ID implcitly投委派以下地方:如何检测在Roslyn中委托转换的隐式方法?
EventHandler a = method;
和明确的委托创建区分它们
EventHandler a = new EventHandler(method);
类型信息和转换看起来完全一样的两个这些。有没有办法使用语义模型来做到这一点,而无需遍历树并试图找到一个父新的对象表达式?
这些地方可以粗略地走二进制表示的节点,展望右键式变换中可以看出:
void VisitBinaryExpression(BinaryExpressionSyntax binaryExpression)
{
var conversion = semanticModel.GetConversion(binaryExpression.Right);
if (conversion.IsMethodGroup)
{
}
}
它看起来并不很可靠,但,这就是我发现至今。
我认为你需要使用'SyntaxWalker',并在分配给'delegate'时寻找缺失的new。 – AlexanderBrevig 2014-11-03 14:07:50
你如何找到你首先要传递给'SemanticModel'的节点? – 2014-11-03 20:10:00
例如,每个简单的名称节点 – 2014-11-04 04:53:44