private bool InvokeMethod(object inThis, StringSlice inData, SplitResources inSplitResources) { if (m_Parameters.Length > 0) { lock (inSplitResources.LockObj) { inSplitResources.ArgList.Clear(); if (m_RequiredParamCount == 1 && m_Parameters.Length == 1) { if (!StringParser.TryConvertTo(inData, m_Parameters[0].ParameterType, out m_MethodParams[0])) { return(false); } } else { int providedArgCount = inData.Split(inSplitResources.Splitter, StringSplitOptions.None, inSplitResources.ArgList); if (providedArgCount < m_RequiredParamCount || providedArgCount > m_Parameters.Length) { return(false); } for (int i = 0; i < providedArgCount; ++i) { if (!StringParser.TryConvertTo(inSplitResources.ArgList[i], m_Parameters[i].ParameterType, out m_MethodParams[i])) { return(false); } } for (int i = providedArgCount; i < m_Parameters.Length; ++i) { m_MethodParams[i] = m_DefaultParams[i]; } } } } try { m_Method.Invoke(inThis, m_MethodParams); return(true); } catch (Exception e) { Debug.LogException(e); return(false); } }
internal bool Invoke(object inThis, StringSlice inData, SplitResources inSplitResources) { if ((m_Flags & InvocationFlags.Static) != 0) { inThis = null; } if ((m_Flags & InvocationFlags.Field) != 0) { return(InvokeField(inThis, inData)); } if ((m_Flags & InvocationFlags.Method) != 0) { return(InvokeMethod(inThis, inData, inSplitResources)); } if ((m_Flags & InvocationFlags.Property) != 0) { return(InvokeProperty(inThis, inData)); } return(false); }