public ObjectDescription(object obj, string name, string description, string group, bool acceptComponentModelAttrributes) { m_object = obj; this.name = name; m_description = description; m_group = group; foreach (PropertyInfo pi in obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)) { SjsmpPropertyAttribute attr = pi.GetCustomAttribute <SjsmpPropertyAttribute>(); if (attr != null) { m_properties.Add(pi.Name, PropertyDescription.CreateWithSjmpAttribute(pi, attr)); } } if (acceptComponentModelAttrributes) { foreach (PropertyInfo pi in obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)) { if (!m_properties.ContainsKey(pi.Name)) { m_properties.Add(pi.Name, PropertyDescription.CreateWithComponentModel(pi)); } } } FieldInfo[] fieldInfos = obj.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); foreach (FieldInfo fi in fieldInfos) { SjsmpPropertyAttribute attr = fi.GetCustomAttribute <SjsmpPropertyAttribute>(); if (attr != null) { m_properties.Add(fi.Name, new FieldDescription(fi, attr)); } } MethodInfo[] methInfos = obj.GetType().GetMethods(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); foreach (MethodInfo ai in methInfos) { SjsmpActionAttribute attr = ai.GetCustomAttribute <SjsmpActionAttribute>(); if (attr != null) { if (m_actions.ContainsKey(ai.Name)) { throw new SjsmpServerException("Duplicate action name " + ai.Name); } m_actions.Add(ai.Name, new ActionDescription(ai, attr)); } } }
public FieldDescription(FieldInfo pi, SjsmpPropertyAttribute attr) { this.m_fi = pi; this.m_attr = attr; }
public static PropertyDescription CreateWithSjmpAttribute(PropertyInfo pi, SjsmpPropertyAttribute attr) { return new PropertyDescription(pi, attr.description, !pi.CanWrite || attr.isReadonly, attr.showGraph); }
public static PropertyDescription CreateWithSjmpAttribute(PropertyInfo pi, SjsmpPropertyAttribute attr) { return(new PropertyDescription(pi, attr.description, !pi.CanWrite || attr.isReadonly, attr.showGraph)); }