コード例 #1
0
        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);
        }
コード例 #2
0
 internal static void InternalAddMapping(IFilterFieldExprNameMapping mapping)
 {
     if (mapping.GetType().GetTypeInfo().IsClass)
     {
         var name = mapping.FilterTypeUniqueName;
         FieldExprNameMappingFactory.Add(name, mapping.Mapping().ToList());
     }
 }
コード例 #3
0
 public override MappingInfo[] Mapping()
 {
     return(FieldExprNameMappingFactory.Add(FilterTypeUniqueName, InternalMapping().ToList()).ToArray());
 }
コード例 #4
0
 internal static void Reset()
 {
     FilterFieldHandlerFactory.Reset();
     FieldExprNameMappingFactory.Clear();
 }
コード例 #5
0
 public static void ShoutDown()
 {
     FilterFieldHandlerFactory.Clear();
     FieldExprNameMappingFactory.Clear();
     GC.Collect();
 }