Exemplo n.º 1
0
        private static IDeclaredElement TryFindDeclaration([NotNull] IInvocationExpression expression, [NotNull] string propertyName,
                                                           [NotNull] string requiredTypeName, [NotNull] string requiredMethodName, out string name)
        {
            name = null;
            var baseClass = expression.GetContainingNode <IClassLikeDeclaration>();

            if (baseClass == null)
            {
                return(null);
            }
            var result = TryFindIdDeclarationInClassLikeDeclaration(baseClass, propertyName, requiredTypeName, requiredMethodName, out name);

            if (result != null)
            {
                return(result);
            }

            var next = ClassLikeDeclarationNavigator.GetByNestedTypeDeclaration(baseClass);

            while (next != null)
            {
                baseClass = next;
                result    = TryFindIdDeclarationInClassLikeDeclaration(baseClass, propertyName, requiredTypeName, requiredMethodName, out name);
                if (result != null)
                {
                    return(result);
                }

                next = ClassLikeDeclarationNavigator.GetByNestedTypeDeclaration(baseClass);
            }

            return(null);
        }
Exemplo n.º 2
0
        private static IClassLikeDeclaration GetTopLevelClassLikeDeclaration([NotNull] IInvocationExpression expression)
        {
            var baseClass = expression.GetContainingNode <IClassLikeDeclaration>();

            if (baseClass == null)
            {
                return(null);
            }

            var next = ClassLikeDeclarationNavigator.GetByNestedTypeDeclaration(baseClass);

            while (next != null)
            {
                baseClass = next;
                next      = ClassLikeDeclarationNavigator.GetByNestedTypeDeclaration(baseClass);
            }

            return(baseClass);
        }