Example #1
0
        /// <summary>
        /// Returns true if this method is an override of a specific method.
        /// </summary>
        /// <param name="method">
        /// The Roslyn method to check.
        /// </param>
        /// <param name="methodInfo">
        /// The reflection-based method you want to see is being overridden.
        /// </param>
        /// <returns>
        /// True, the Roslyn method is an override of <paramref name="methodInfo"/>.
        /// </returns>
        static public Boolean IsOverideOf(this IMethodSymbol method, MethodInfo methodInfo)
        {
            String methAssemblyName = methodInfo.DeclaringType.AssemblyQualifiedName;

            if (!method.GetTypesQualifiedAssemblyName().Equals(methAssemblyName))
            {
                if (!method.IsOverride)
                {
                    return(false);
                }
                return(method.OverriddenMethod.IsOverideOf(methodInfo));
            }

            if (!method.Name.Equals(methodInfo.Name))
            {
                return(false);
            }

            return(method.DoParamatersMatch(methodInfo.GetParameters().Select(pi => pi.ParameterType).ToArray()));
        }