Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
 public void SetValue(object obj, object value)
 {
     value = DataTypesFixer.FixLongType(value, m_fi.FieldType);
     m_fi.SetValue(obj, value);
 }