Ejemplo n.º 1
0
 /// <summary>
 /// Create a new ReferenceFilter from a FieldFilterAttribute and a property
 /// </summary>
 /// <param name="filterAttr">The FieldFilterAttribute</param>
 /// <param name="propInfo">The property</param>
 public ReferenceFilter(FieldFilterAttribute filterAttr, PropertyInfo propInfo)
     : base(filterAttr, propInfo)
 {
     refFieldName = filterAttr.ReferencedFieldName;
     refType      = filterAttr.ReferencedType;
     RefValue     = (Reference)Activator.CreateInstance(propInfo.PropertyType);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Create an appropriate filter from an FieldFilterAttribute and a property it is applied to
        /// </summary>
        /// <param name="filterAttr">the FieldFilterAttribute</param>
        /// <param name="propInfo">the property it is applied to</param>
        /// <returns>Resulting filter</returns>
        public static ListFilter Create(FieldFilterAttribute filterAttr, PropertyInfo propInfo)
        {
            ListFilter filt = null;

            if (filterAttr.ReferencedType != null && filterAttr.ReferencedFieldName != null)
            {
                if (typeof(Reference).IsAssignableFrom(propInfo.PropertyType))
                {
                    filt = new ReferenceFilter(filterAttr, propInfo);
                }
                else
                {
                    filt = new ForeignKeyFilter(filterAttr, propInfo);
                }
            }
            else
            {
                switch (propInfo.PropertyType.Name)
                {
                case "String":
                    filt = new StringFieldFilter(filterAttr, propInfo);
                    break;

                case "DateTime":
                    filt = new DateFieldFilter(filterAttr, propInfo);
                    break;

                case "Nullable`1":
                    if (Nullable.GetUnderlyingType(propInfo.PropertyType) == typeof(DateTime))
                    {
                        filt = new DateFieldFilter(filterAttr, propInfo);
                    }
                    break;
                }
            }
            if (filt == null)
            {
                throw new NotImplementedException("Cannot have FieldFilter for property type " + propInfo.PropertyType.Name);
            }

            ((FieldFilter)filt).Showable = filterAttr.Showable;

            return(filt);
        }
Ejemplo n.º 3
0
 public StringFieldFilter(FieldFilterAttribute filterAttr, PropertyInfo propInfo)
     : base(filterAttr, propInfo)
 {
 }
Ejemplo n.º 4
0
 public ForeignKeyFilter(FieldFilterAttribute filterAttr, PropertyInfo propInfo)
     : base(filterAttr, propInfo)
 {
     refFieldName = filterAttr.ReferencedFieldName;
     refType      = filterAttr.ReferencedType;
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Create a FieldFilter from a FieldFilterAttribute and the property it is attached to
 /// </summary>
 /// <param name="filterAttr">The FieldFilterAttribute</param>
 /// <param name="propInfo">The property the attribute is attached to</param>
 public FieldFilter(FieldFilterAttribute filterAttr, PropertyInfo propInfo) : this()
 {
     this.Name           = filterAttr.Name ?? propInfo.Name;
     this.PropInfo       = propInfo;
     this.ApplicableType = propInfo.DeclaringType;
 }