Exemple #1
0
            public bool TryInvoke(object inTarget, IReadOnlyList <StringSlice> inArguments, object inContext, IStringConverter inConverter, out object outReturnValue)
            {
                if (inArguments.Count < m_RequiredParameterCount || inArguments.Count >= m_Parameters.Length)
                {
                    UnityEngine.Debug.LogErrorFormat("[MethodCache] Expected between {0} and {1} arguments to {2}::'{3}', got {4} instead",
                                                     m_RequiredParameterCount, m_Parameters.Length - m_ContextOffset, Method.DeclaringType.Name, Id.ToDebugString(), inArguments.Count);

                    outReturnValue = null;
                    return(false);
                }

                for (int i = 0; i < inArguments.Count; ++i)
                {
                    if (!inConverter.TryConvertTo(inArguments[i], m_Parameters[i + m_ContextOffset].ParameterType, inContext, out m_Arguments[i + m_ContextOffset]))
                    {
                        UnityEngine.Debug.LogErrorFormat("[MethodCache] Unable to convert string '{0}' to expected type {1}", inArguments[i], m_Parameters[i + m_ContextOffset].ParameterType.Name);
                        outReturnValue = null;
                        return(false);
                    }
                }

                return(DoInvoke(inTarget, inArguments.Count + m_ContextOffset, inContext, out outReturnValue));
            }