private static bool ObjectDrawerForType(Type type, ref ObjectDrawer objectDrawer, ref Type objectDrawerType, int hash) { ObjectDrawerUtility.BuildObjectDrawers(); if (!ObjectDrawerUtility.objectDrawerTypeMap.ContainsKey(type)) { return(false); } objectDrawerType = ObjectDrawerUtility.objectDrawerTypeMap[type]; if (ObjectDrawerUtility.objectDrawerMap.ContainsKey(hash)) { objectDrawer = ObjectDrawerUtility.objectDrawerMap[hash]; } return(true); }
public static ObjectDrawer GetObjectDrawer(FieldInfo field) { ObjectDrawer objectDrawer = null; Type type = null; if (!ObjectDrawerUtility.ObjectDrawerForType(field.FieldType, ref objectDrawer, ref type, field.GetHashCode())) { return(null); } if (objectDrawer == null) { objectDrawer = (Activator.CreateInstance(type) as ObjectDrawer); ObjectDrawerUtility.objectDrawerMap.Add(field.GetHashCode(), objectDrawer); } objectDrawer.FieldInfo = field; return(objectDrawer); }
public static ObjectDrawer GetObjectDrawer(ObjectDrawerAttribute attribute) { ObjectDrawer objectDrawer = null; Type type = null; if (!ObjectDrawerUtility.ObjectDrawerForType(attribute.GetType(), ref objectDrawer, ref type, attribute.GetHashCode())) { return(null); } if (objectDrawer != null) { return(objectDrawer); } objectDrawer = (Activator.CreateInstance(type) as ObjectDrawer); objectDrawer.Attribute = attribute; ObjectDrawerUtility.objectDrawerMap.Add(attribute.GetHashCode(), objectDrawer); return(objectDrawer); }