private static void FillFilterParameterAttributes(FilterSerializerData filterSerializerData, IFilter filter, Type filterType, FilterBindingContext context) { var propertyInfos = filterType.GetProperties().ToList(); foreach (var propertyInfo in propertyInfos) { var filterParameterAttribute = AttributeRetrieval.GetAttribute<FilterParameterAttribute>(propertyInfo); if (filterParameterAttribute == null) { continue; } //get the value set or bound to the parameter var value = GetFilterSerializationBindingValue(filterParameterAttribute, propertyInfo, context, filter); //run validation on the parameter to ensure that it meets all standards RunFilterSerializationValidation(filterType, propertyInfo, value); //run formatter on the validated value var filterPropertyFormattedValue = RunFilterSerializationFormat(filterParameterAttribute, filterType, propertyInfo, value); var filterPropertyIsDefault = filterParameterAttribute.Default != null && value != null && filterParameterAttribute.Default.Equals(value); filterSerializerData.Parameters.Add(new FilterSerializerDataParameter { Name = filterParameterAttribute.Name, Value = filterPropertyFormattedValue, Parameter = filterParameterAttribute, IsDefault = filterPropertyIsDefault }); } }
private void WriteFilter(IFilter filter, FilterBindingContext context) { if (filter == null) { throw new ArgumentNullException("filter"); } BuilderBase.Append(FilterSerializer.Serialize(filter, context)); }
private static object GetFilterSerializationBindingValue(FilterParameterAttribute filterParameterAttribute, PropertyInfo propertyInfo, FilterBindingContext context, IFilter filter) { if (filterParameterAttribute.Binding == null) { return propertyInfo.GetValue(filter); } var bindingObject = (IFilterParameterBinding)Activator.CreateInstance(filterParameterAttribute.Binding); return bindingObject.GetValue(context); }
public static FilterSerializerData GetFilterSerializerData(IFilter filter, FilterBindingContext context) { var filterType = filter.GetType(); var filterSerializerData = new FilterSerializerData(); FillFilterAttribute(filterSerializerData, filter, filterType); FillFilterParameterAttributes(filterSerializerData, filter, filterType, context); return filterSerializerData; }
public string GetValue(FilterBindingContext context) { return context.NumberOfStreamsIn.ToString(); }