/// <summary> /// 获取 成员访问语法节点的父级类型 /// </summary> public static ITypeSymbol?GetMemberAccessSyntaxParentType(this MemberAccessExpressionSyntax memberAccessExpressionSyntax, SemanticModel semanticModel) { SyntaxNode?firstChildSyntaxNode = memberAccessExpressionSyntax.GetFirstChild(); if (firstChildSyntaxNode == null) { return(null); } ISymbol?firstChildSymbol = semanticModel.GetSymbolInfo(firstChildSyntaxNode).Symbol; if (firstChildSymbol == null) { return(null); } if (firstChildSymbol is ILocalSymbol localSymbol) { return(localSymbol.Type); } if (firstChildSymbol is IParameterSymbol parameterSymbol) { return(parameterSymbol.Type); } if (firstChildSymbol is IPropertySymbol propertySymbol) { return(propertySymbol.Type); } if (firstChildSymbol is IMethodSymbol methodSymbol) { return(methodSymbol.ReturnType); } if (firstChildSymbol is IFieldSymbol fieldSymbol) { return(fieldSymbol.Type); } if (firstChildSymbol is IEventSymbol eventSymbol) { return(eventSymbol.Type); } return(null); }