public static FilterFieldMetaInfo[] GetFilterFields(IDataFilter filter) { var filterUniqueName = TypeHelper.GetGenericTypeUniqueName(filter.GetType()); var propExprMappings = FieldExprNameMappingFactory.Get(filterUniqueName, () => { return(InternalExprNameMappingUtil.CreateFilterExprNameMappings(filter).ToList()); }); var exprNames = propExprMappings.Select(p => p.Property.Name); var properties = GetFieldPropertiesFromFilter(filter).Where(p => exprNames.Contains(p.Name)); var fieldFilterIndex = 0; var FilterFieldMetaInfos = new FilterFieldMetaInfo[properties.Count()]; foreach (var property in properties) { var map = propExprMappings.FirstOrDefault(p => p.Property.Name == property.Name); var objValue = property.GetValue(filter, null); var sortValue = objValue as IHasSortField; if (sortValue != null && sortValue.SortMode == SortMode.Disable) { if (map.ExprNameAttribute != null) { sortValue.SortMode = map.ExprNameAttribute.SortMode; sortValue.SortPriority = map.ExprNameAttribute.SortPriority; } objValue = sortValue; } FilterFieldMetaInfos[fieldFilterIndex++] = CreateFilterFieldMetaInfoByType( property.PropertyType, objValue, map.ExprName, property.GetCustomAttributes <Attribute>(true)); } return(FilterFieldMetaInfos); }
internal static void InternalAddMapping(IFilterFieldExprNameMapping mapping) { if (mapping.GetType().GetTypeInfo().IsClass) { var name = mapping.FilterTypeUniqueName; FieldExprNameMappingFactory.Add(name, mapping.Mapping().ToList()); } }
public override MappingInfo[] Mapping() { return(FieldExprNameMappingFactory.Add(FilterTypeUniqueName, InternalMapping().ToList()).ToArray()); }
internal static void Reset() { FilterFieldHandlerFactory.Reset(); FieldExprNameMappingFactory.Clear(); }
public static void ShoutDown() { FilterFieldHandlerFactory.Clear(); FieldExprNameMappingFactory.Clear(); GC.Collect(); }