public IDeclaredElement GetPrimaryDeclaredElement(IDeclaredElement declaredElement, IReference reference) { IDeclaredElement derivedElement = null; var method = declaredElement as IMethod; if (method != null) { derivedElement = DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForMethod(method); } var @class = declaredElement as IClass; if (@class != null) { derivedElement = DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForClass(@class); } var @interface = declaredElement as IInterface; if (@interface != null) { derivedElement = DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForInterface(@interface); } if (derivedElement != null) { return(derivedElement); } return(declaredElement); }
public CSharpToPsiSearchRequest(IDeclaredElement declaredElement) { if (declaredElement == null) { throw new ArgumentNullException("declaredElement"); } Logger.Assert(declaredElement.IsValid(), "declaredElement should be valid"); mySolution = declaredElement.GetPsiServices().Solution; var @class = declaredElement as IClass; if (@class != null) { myTarget = new DeclaredElementEnvoy <IDeclaredElement>(DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForClass(@class)); } var @method = declaredElement as IMethod; if (@method != null) { myTarget = new DeclaredElementEnvoy <IDeclaredElement>(DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForMethod(@method)); } var @interface = declaredElement as IInterface; if (@interface != null) { myTarget = new DeclaredElementEnvoy <IDeclaredElement>(DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForInterface(@interface)); } var @constructor = declaredElement as IConstructor; if (@constructor != null) { @class = @constructor.GetContainingType() as IClass; if (@class != null) { myTarget = new DeclaredElementEnvoy <IDeclaredElement>(DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForClass(@class)); } } }
public override bool IsAvailable(IDataContext dataContext) { var textControl = dataContext.GetData(TextControl.DataContext.DataConstants.TEXT_CONTROL); ISolution solution = dataContext.GetData(ProjectModel.DataContext.DataConstants.SOLUTION); var token = TextControlToPsi.GetSourceTokenAtCaret(solution, textControl); var referenceName = token.Parent as IReferenceName; if (referenceName != null) { if (referenceName.Reference.CurrentResolveResult != null) { var declaredElement = referenceName.Reference.CurrentResolveResult.DeclaredElement; var @class = declaredElement as IClass; if (@class != null) { return(DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForClass(@class) != null); } var @method = declaredElement as IMethod; if (@method != null) { return(DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForMethod(@method) != null); } var @interface = declaredElement as IInterface; if (@interface != null) { return(DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForInterface(@interface) != null); } } return(false); } var classDeclaration = token.Parent as IClassDeclaration; if (classDeclaration != null) { var @class = classDeclaration.DeclaredElement as IClass; return((@class != null) && (DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForClass(@class) != null)); } var methodDeclaration = token.Parent as IMethodDeclaration; if (methodDeclaration != null) { var @method = methodDeclaration.DeclaredElement; return((@method != null) && (DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForMethod(@method) != null)); } var interfaceDeclaration = token.Parent as IInterfaceDeclaration; if (interfaceDeclaration != null) { var @interface = interfaceDeclaration.DeclaredElement as IInterface; return((@interface != null) && (DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForInterface(@interface) != null)); } var constructorDeclaration = token.Parent as IConstructorDeclaration; if (constructorDeclaration != null) { var @class = constructorDeclaration.GetContainingTypeDeclaration().DeclaredElement as IClass; return((@class != null) && (DerivedDeclaredElementUtil.GetPrimaryDeclaredElementForClass(@class) != null)); } return(false); }