示例#1
0
        void InitMethods()
        {
            if (methods != null)
            {
                return;
            }
            methods = new Dictionary <string, List <MethodBase> >(StringComparer.Ordinal);

            var flags = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance;

            foreach (var method in ResolverUtils.GetMethodBases(type, flags))
            {
                if (!methods.TryGetValue(method.Name, out var list))
                {
                    methods[method.Name] = list = new List <MethodBase>();
                }
                list.Add(method);
            }
        }
示例#2
0
        void InitMethods()
        {
            if (tokenToMethod != null)
            {
                return;
            }
            tokenToMethod     = new Dictionary <int, MMethod>(typeDef.Methods.Count);
            methodRefToMethod = new MethodDefDict <MMethod>();

            var tmpTokenToMethod = new Dictionary <int, MethodBase>();
            var flags            = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;

            foreach (var m in ResolverUtils.GetMethodBases(type, flags))
            {
                tmpTokenToMethod[m.MetadataToken] = m;
            }
            foreach (var m in typeDef.Methods)
            {
                var token  = (int)m.MDToken.Raw;
                var method = new MMethod(tmpTokenToMethod[token], m);
                tokenToMethod[token] = method;
                methodRefToMethod.Add(method.methodDef, method);
            }
        }