Example #1
0
        public JMappingFunction TryGetFunction(Type[] parameterTypes)
        {
            JMappingFunction ret = null;

            var functions = new List <JMappingFunction>();

            foreach (var item in _functions)
            {
                if (item.ParameterTypes != parameterTypes)
                {
                    continue;
                }

                if (TypeUtils.CompareTypes(item.ParameterTypes, parameterTypes))
                {
                    functions.Add(item);
                }
            }

            if (functions.Count != 0)
            {
                var max = 0;

                ret = functions[0];

                foreach (var function in functions)
                {
                    var t = 0;

                    for (int i = 0; i < function.ParameterTypes.Length; i++)
                    {
                        if (parameterTypes[i] == null)
                        {
                            continue;
                        }
                        else if (parameterTypes[i] == function.ParameterTypes[i])
                        {
                            t += 2;
                        }
                        else
                        {
                            t += 1;
                        }
                    }

                    if (t > max)
                    {
                        ret = function;
                        max = t;
                    }
                }
            }

            return(ret);
        }