public HandlerInfo(string path, SPPropertyAttributePropertyHandler handler) { this.propPath = path; this.handler = handler; }
private static void AddAsHandled(SerializedProperty property, SPPropertyAttributePropertyHandler handler) { if (property.serializedObject.targetObject != null) { _usedHandlers.Add(property.serializedObject.targetObject.GetInstanceID(), new HandlerInfo(property.propertyPath, handler)); } }
//####################### // GetHandler public static IPropertyHandler GetHandler(SerializedProperty property) { if (property == null) throw new System.ArgumentNullException("property"); IPropertyHandler result = _handlerCache.GetHandler(property); if (result != null) { return result; } //TEST FOR SPECIAL CASE HANDLER var fieldInfo = ScriptAttributeUtility.GetFieldInfoFromProperty(property); if (fieldInfo != null && System.Attribute.IsDefined(fieldInfo, typeof(SPPropertyAttribute))) { var attribs = fieldInfo.GetCustomAttributes(typeof(SPPropertyAttribute), false).Cast<SPPropertyAttribute>().ToArray(); //if (attribs[0].HandlesEntireArray) //{ // result = new SPPropertyAttributePropertyHandler(fieldInfo, attribs); // _handlerCache.SetHandler(property, result); // return result; //} result = new SPPropertyAttributePropertyHandler(fieldInfo, attribs); _handlerCache.SetHandler(property, result); return result; } //USE STANDARD HANDLER if none was found return StandardPropertyHandler.Instance; }