internal InterfaceDeclaration( ClassDeclarationSyntax definingClass, GenericNameSyntax declaredInterface ) { Contract.Requires( definingClass != null ); Contract.Requires( declaredInterface != null ); key = declaredInterface.Identifier.Text; typeName = declaredInterface.ToString(); this.definingClass = definingClass; this.declaredInterface = declaredInterface; }
public override SyntaxNode VisitGenericName(GenericNameSyntax node) { if (node.ToString().Contains("Request")) Console.WriteLine(); if (!(node.Parent is MemberAccessExpressionSyntax) || ((MemberAccessExpressionSyntax)node.Parent).Expression == node) { if (node.GetContainingMethod() == null) { return base.VisitGenericName(node); } var containingType = node.GetContainingType(); if (containingType == null || !containingType.Name.StartsWith(enclosingTypeName)) return node; var symbol = semanticModel.GetSymbolInfo(node).Symbol; if (symbol == null || (new[] { SymbolKind.Field, SymbolKind.Event, SymbolKind.Method, SymbolKind.Property }.Contains(symbol.Kind) && !symbol.ContainingType.Name.StartsWith(enclosingTypeName) && !symbol.IsStatic)) { return SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.IdentifierName("_this"), node); } } return base.VisitGenericName(node); }