Пример #1
0
        static string getDelegateName(MethodDefinition method)
        {
            string fieldName = method.Name;

            if (fieldName.StartsWith("."))
            {
                fieldName = fieldName.Substring(1);
            }
            string ccFlag = method.IsConstructor ? "_c" : "";
            var    type   = method.DeclaringType;
            Dictionary <string, StrMethod> nameToCount = new Dictionary <string, StrMethod>();
            StrMethod strMethod = null;
            {
                foreach (var ator in type.Methods)
                {
                    if (!nameToCount.TryGetValue(ator.Name, out strMethod))
                    {
                        strMethod = new StrMethod(ator.Name);
                        nameToCount.Add(ator.Name, strMethod);
                    }

                    strMethod.methods.Add(ator);
                }

                strMethod = nameToCount[method.Name];
            }

            string name = ccFlag + "__Hotfix_" + fieldName;

            if (strMethod.Count == 1)
            {
                return(name);
            }

            // 是否所有函数的参数个数都不一样
            //if (strMethod.isNotSameParam)
            //    return name + "_" + method.Parameters.Count;

            strMethod.Sorted();
            for (int i = 0; i < strMethod.methods.Count; ++i)
            {
                if (strMethod.methods[i] == method)
                {
                    return(name + "_" + i);
                }
            }

            wxb.L.LogErrorFormat("method:{0} not field name!", method.Name);
            return("");
        }
Пример #2
0
        static void Main(string[] args)
        {
            StrMethod MakeReverce = new StrMethod(Reverce);
            string    text        = "Hello world!";

            //text = MakeReverce(text);
            Console.WriteLine(MakeReverce(text));

            MakeReverce = UpperCase;
            Console.WriteLine(MakeReverce(text));
            Console.WriteLine(text);

            MakeReverce = (string str) => { return(str.Replace('l', 'L')); };
            Console.WriteLine(MakeReverce(text));

            Str strOb = new Str();

            MakeReverce = strOb.ReplaceSpaces;
            Console.WriteLine(MakeReverce(text));
            Console.ReadKey();
        }