internal JValue Call(object obj, JObject parameters) { object[] arguments = new object[m_parameterInfo.Count]; foreach (KeyValuePair <string, JToken> pair in parameters) { string name = pair.Key; JToken token = pair.Value; if (!(token is JValue)) { throw new ArgumentException("Argument '" + name + "' must be a scalar type"); } ; JValue jValue = (JValue)token; object value = jValue.Value; Parameter parameter; if (!m_parameterInfo.TryGetValue(name, out parameter)) { throw new ArgumentException("Argument '" + name + "' does not exist"); } ; value = DataTypesFixer.FixLongType(value, parameter.type); arguments[parameter.index] = value; } ; object retValue = m_ai.Invoke(obj, arguments); JValue retJValue = new JValue(retValue); return(retJValue); }
public void SetValue(object obj, object value) { if (m_readonly) { throw new ApplicationException("Attempt to set value for readonly property " + m_pi.DeclaringType + "." + m_pi.Name); } value = DataTypesFixer.FixLongType(value, m_pi.PropertyType); if (m_limits != null && Comparer.Default.Compare(value, Convert.ChangeType(m_limits.min, m_pi.PropertyType)) < 0) { throw new SjsmpServerException("Trying to set a value that is less than minimal"); } if (m_limits != null && Comparer.Default.Compare(value, Convert.ChangeType(m_limits.max, m_pi.PropertyType)) > 0) { throw new SjsmpServerException("Trying to set a value that is greater than maximal"); } m_pi.SetValue(obj, value); }
public void SetValue(object obj, object value) { value = DataTypesFixer.FixLongType(value, m_fi.FieldType); m_fi.SetValue(obj, value); }