Example #1
0
        public static IParameterSymbol GetTargetSymbolForAnnotation(this IParameterSymbol parameterSymbol)
        {
            var baseClass = parameterSymbol?.GetContractClassFor();

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

            var outerMethodSymbol = parameterSymbol.ContainingSymbol as IMethodSymbol;

            if (outerMethodSymbol == null)
            {
                return(parameterSymbol);
            }

            var baseMethod = baseClass.FindDeclaringMemberOnBaseClass(outerMethodSymbol);

            if (baseMethod == null)
            {
                return(parameterSymbol);
            }

            return(baseMethod.Parameters[outerMethodSymbol.Parameters.IndexOf(parameterSymbol)]);
        }