Beispiel #1
0
        public static string SignatureFor(MethodReference method)
        {
            if (cache.ContainsKey(method))
            {
                return(cache[method]);
            }

            var sb = new StringBuilder();

            sb.Append(method.ReturnType.ReturnType.FullName);
            sb.Append(" ");
            sb.Append(method.DeclaringType.FullName);
            sb.Append("::");
            sb.Append(method.Name);
            if (method.HasGenericParameters)
            {
                sb.Append("<");
                for (int i = 0; i < method.GenericParameters.Count; i++)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }
                    sb.Append(method.GenericParameters[i].Name);
                }
                sb.Append(">");
            }
            sb.Append("(");
            if (method.HasParameters)
            {
                int sentinel = method.GetSentinel();
                for (int i = 0; i < method.Parameters.Count; i++)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }

                    if (i == sentinel)
                    {
                        sb.Append("...,");
                    }

                    sb.Append(method.Parameters[i].ParameterType.FullName);
                }
            }
            sb.Append(")");
            var result = sb.ToString();

            cache[method] = result;
            return(result);
        }
Beispiel #2
0
        static string GetFullName(MethodReference method)
        {
            int sentinel = method.GetSentinel();

            StringBuilder sb = new StringBuilder();

            sb.Append(method.ReturnType.ReturnType.FullName);
            sb.Append(" ");
            sb.Append(method.DeclaringType.FullName);
            sb.Append("::");
            sb.Append(method.Name);
            if (method.HasGenericParameters)
            {
                sb.Append("<");
                for (int i = 0; i < method.GenericParameters.Count; i++)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }
                    sb.Append(method.GenericParameters [i].Name);
                }
                sb.Append(">");
            }
            sb.Append("(");
            if (method.HasParameters)
            {
                for (int i = 0; i < method.Parameters.Count; i++)
                {
                    if (i > 0)
                    {
                        sb.Append(",");
                    }

                    if (i == sentinel)
                    {
                        sb.Append("...,");
                    }

                    sb.Append(method.Parameters [i].ParameterType.FullName);
                }
            }
            sb.Append(")");
            return(sb.ToString());
        }
        //based on the code from Mono.Cecil.MethodReference.ToString()
        public static string getMethodParametersSiganature(MethodReference methodReference)
        {
            int sentinel = methodReference.GetSentinel();
            var builder  = new StringBuilder();

            builder.Append("(");
            for (int i = 0; i < methodReference.Parameters.Count; i++)
            {
                if (i > 0)
                {
                    builder.Append(",");
                }
                if (i == sentinel)
                {
                    builder.Append("...,");
                }
                builder.Append(methodReference.Parameters[i].ParameterType.FullName);
            }
            builder.Append(")");
            return(builder.ToString());
        }