Пример #1
0
        public TImpl ResolveOverload(JsInstance[] args, Type[] generics)
        {
            Type[] argTypes = Array.ConvertAll <JsInstance, Type>(args, x => m_marshaller.GetInstanceType(x));
            string key      = MakeKey(argTypes, generics);
            TImpl  method;

            if (!m_protoCache.TryGetValue(key, out method))
            {
                TMemberInfo info = MatchMethod(argTypes, GetMembers(generics, args.Length));

                if (info != null && !m_reflectCache.TryGetValue(info, out method))
                {
                    m_reflectCache[info] = method = WrapMember(info);
                }

                m_protoCache[key] = method;
            }

            return(method);
        }