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); } } } }
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); } } } }