public static CompactList <IField> GetFieldsByAttribute(this IAttribute attribute) { var list = new CompactList <IField>(); foreach (var fieldDeclaration in FieldDeclarationNavigator.GetByAttribute(attribute)) { if (fieldDeclaration.DeclaredElement != null) { list.Add(fieldDeclaration.DeclaredElement); } } foreach (var constantDeclaration in ConstantDeclarationNavigator.GetByAttribute(attribute)) { if (constantDeclaration.DeclaredElement != null) { list.Add(constantDeclaration.DeclaredElement); } } return(list); }
private static IDeclaredElement FindDeclaredElement([NotNull] IPsiView psiView) { var referenceExpression = psiView.GetSelectedTreeNode <IReferenceExpression>(); if (referenceExpression != null) { return(referenceExpression.Reference.Resolve().DeclaredElement); } var identifier = psiView.GetSelectedTreeNode <ICSharpIdentifier>(); if (identifier != null) { var referenceName = ReferenceNameNavigator.GetByNameIdentifier(identifier); if (referenceName != null) { return(referenceName.Reference.Resolve().DeclaredElement); } var declarationUnderCaret = FieldDeclarationNavigator.GetByNameIdentifier(identifier) ?? PropertyDeclarationNavigator.GetByNameIdentifier(identifier) ?? MethodDeclarationNavigator.GetByNameIdentifier(identifier) ?? ConstructorDeclarationNavigator.GetByTypeName(identifier) ?? CSharpTypeDeclarationNavigator.GetByNameIdentifier(identifier) ?? EventDeclarationNavigator.GetByNameIdentifier(identifier) ?? ConstantDeclarationNavigator.GetByNameIdentifier(identifier) ?? VariableDeclarationNavigator.GetByNameIdentifier(identifier); return(declarationUnderCaret?.DeclaredElement); } var predefinedTypeUsage = psiView.GetSelectedTreeNode <IPredefinedTypeUsage>(); return(predefinedTypeUsage?.ScalarPredefinedTypeName.Reference.Resolve().DeclaredElement); }