所以我還想尋找到方法組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