/// <summary> /// Attempts to invoke an instance method. /// </summary> public bool TryInvoke(object inTarget, StringHash32 inId, StringSlice inArguments, object inContext, out object outResult) { var method = FindMethodWithRedirect(ref inTarget, inId); if (method == null) { outResult = null; return(false); } TempList16 <StringSlice> args = default(TempList16 <StringSlice>); inArguments.Split(m_StringSplitter, StringSplitOptions.None, ref args); return(method.TryInvoke(inTarget, args, inContext, m_StringConverter, out outResult)); }
public bool TryInvoke(object inTarget, TempList16 <StringSlice> inArguments, object inContext, IStringConverter inConverter, out object outReturnValue) #endif // EXPANDED_REFS { 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)); }