private void CreateElementEditors(IList value) { for (int i = 0; i < value.Count; ++i) { PropertyEditor editor = Instantiate(m_editorPrefab); editor.transform.SetParent(Panel, false); IListElementAccessor accessor = new IListElementAccessor(this, i, "Element " + i); editor.Init(accessor, accessor.GetType().GetProperty("Value"), accessor.Name, OnValueChanging, OnValueChanged, null, false); } }
protected virtual void InitOverride(object target, MemberInfo memberInfo, string label = null) { if (target == null) { throw new ArgumentNullException("target"); } IListElementAccessor arrayElement = target as IListElementAccessor; if (arrayElement == null) { if (!(memberInfo is PropertyInfo) && !(memberInfo is FieldInfo)) { throw new ArgumentException("memberInfo should be PropertyInfo or FieldInfo"); } if (memberInfo is PropertyInfo) { Type propType = ((PropertyInfo)memberInfo).PropertyType; MemberInfoType = propType; } else { Type fieldType = ((FieldInfo)memberInfo).FieldType; MemberInfoType = fieldType; } if (Label != null) { if (label != null) { Label.text = label; } else { Label.text = memberInfo.Name; } } } else { if (Label != null) { Label.text = arrayElement.Name; } MemberInfoType = arrayElement.Type; } Target = target; MemberInfo = memberInfo; }