public override void LoadFrom(FilterItem value) { var group = value as FilterItemGroup; if (group != null) { foreach (var item in group.Children) { Children.Add(FilterItemBuilder.GetBuilder(item)); } GroupType = group.GroupType; } else { throw new ArgumentException($"Unexpected FilterItem. Expected {nameof(FilterItemGroup)} got {value?.GetType()}", nameof(value)); } }
public static FilterItemBuilder GetBuilder(FilterItem item) { FilterItemBuilder result = null; if (item is FilterItemGroup) { result = new FilterItemGroupBuilder(); } else if (item is BooleanFilterItem) { result = new BooleanFilterItemBuilder(); } else if (item is StringBinaryFilterItem) { result = new StringFilterItemBuilder(); } else if (item is DateTimeBinaryFilterItem) { result = new DateTimeFilterItemBuilder(); } else if (item is NumericBinaryFilterItem) { result = new NumericFilterItemBuilder(); } else if (item is AnyFilterItem) { result = new AnyFilterItemBuilder(); } else if (item is GuidBinaryFilterItem) { result = new GuidFilterItemBuilder(); } if (result == null) { throw new NotSupportedException($"Unsupported FilterItem {item?.GetType()} detected"); } result.LoadFrom(item); return(result); }