Beispiel #1
0
        private PropertyDescription(PropertyInfo pi, string description, bool isReadonly, bool showGraph)
        {
            m_pi          = pi;
            m_description = description;
            m_readonly    = isReadonly;
            m_showGraph   = showGraph;
            Type type = pi.PropertyType;

            if (!DataTypes.TypeToName(type, out m_sjmpTypeName))
            {
                m_sjmpTypeName = DataTypes.TypeToName(typeof(string));
                m_needToString = true;
                m_readonly     = true;
            }
            else
            {
                m_needToString = false;
            }

            if (m_showGraph && !DataTypes.IsGraphAllowed(m_sjmpTypeName))
            {
                throw new SjsmpServerException("Having 'showGraph' for type '" + m_sjmpTypeName + "' is not allowed. " + m_pi.DeclaringType + "." + m_pi.Name);
            }

            m_limits = pi.GetCustomAttribute <SjsmpPropertyLimitsAttribute>();
            if (m_limits != null)
            {
                if (!m_limits.useFloat)
                {
                    if (!DataTypes.IsIntType(type))
                    {
                        throw new SjsmpServerException("Having int PropertyLimits for type '" + m_sjmpTypeName + "' is not allowed." + m_pi.DeclaringType + "." + m_pi.Name);
                    }
                }
                else
                {
                    if (!DataTypes.IsFloatType(type))
                    {
                        throw new SjsmpServerException("Having float PropertyLimits for type '" + m_sjmpTypeName + "' is not allowed. " + m_pi.DeclaringType + "." + m_pi.Name);
                    }
                }
            }
        }
Beispiel #2
0
        private PropertyDescription(PropertyInfo pi, string description, bool isReadonly, bool showGraph)
        {
            m_pi = pi;
            m_description = description;
            m_readonly = isReadonly;
            m_showGraph = showGraph;
            Type type = pi.PropertyType;

            if (!DataTypes.TypeToName(type, out m_sjmpTypeName))
            {
                m_sjmpTypeName = DataTypes.TypeToName(typeof(string));
                m_needToString = true;
                m_readonly = true;
            }
            else
            {
                m_needToString = false;
            }
            
            if (m_showGraph && !DataTypes.IsGraphAllowed(m_sjmpTypeName))
            {
                throw new SjsmpServerException("Having 'showGraph' for type '" + m_sjmpTypeName + "' is not allowed. " + m_pi.DeclaringType + "." + m_pi.Name);
            }

            m_limits = pi.GetCustomAttribute<SjsmpPropertyLimitsAttribute>();
            if (m_limits != null)
            {
                if (!m_limits.useFloat)
                {
                    if (!DataTypes.IsIntType(type))
                    {
                        throw new SjsmpServerException("Having int PropertyLimits for type '" + m_sjmpTypeName + "' is not allowed." + m_pi.DeclaringType + "." + m_pi.Name);
                    }
                }
                else
                {
                    if (!DataTypes.IsFloatType(type))
                    {
                        throw new SjsmpServerException("Having float PropertyLimits for type '" + m_sjmpTypeName + "' is not allowed. " + m_pi.DeclaringType + "." + m_pi.Name);
                    }
                }
            }
        }